我有一个应用程序,可以截取场景的屏幕截图并将其保存到文件中。我已经让它工作了,应用程序已经在商店里了。今天,我下载了iOS 6,我使用的方法不再起作用了。我测试了我所知道的一切以使其工作,搜索了一下,发现了以下内容:
http://www.cocos2d-iphone.org/forum/topic/37809?replies=22#post-180983
用户似乎一致认为这在iOS 5上是有效的,但我已经在iOS 6上测试过了,它产生了黑色屏幕截图。
我不是Cocos2D方面的专家,所以我不能说这个人的代码到底出了什么问题。作者在github上有一个样例项目,甚至他的项目都是在iOS 6上制作黑色截图。
有什么线索吗?谢谢。
谢谢
发布于 2012-09-14 06:19:46
我不确定GitHub版本是做什么的,但这段代码会截屏,我刚刚在iOS 6上测试了它,它工作得很好。
+(UIImage*) screenshotWithStartNode:(CCNode*)startNode
{
[CCDirector sharedDirector].nextDeltaTimeZero = YES;
CGSize winSize = [CCDirector sharedDirector].winSize;
CCRenderTexture* rtx =
[CCRenderTexture renderTextureWithWidth:winSize.width
height:winSize.height];
[rtx begin];
[startNode visit];
[rtx end];
return [rtx getUIImage];
}你可以这样叫它
CCScene *scene = [[CCDirector sharedDirector] runningScene];
CCNode *n = [scene.children objectAtIndex:0];
UIImage *img = [AppController screenshotWithStartNode:n];发布于 2014-05-13 02:32:26
这在这里适用于Cocos2d V3。
+(UIImage*) screenshotWithStartNode:(CCNode*)startNode
{
[CCDirector sharedDirector].nextDeltaTimeZero = YES;
CGSize viewSize = [[CCDirector sharedDirector] viewSize];
CCRenderTexture* rtx =
[CCRenderTexture renderTextureWithWidth:viewSize.width
height:viewSize.height];
[rtx begin];
[startNode visit];
[rtx end];
return [rtx getUIImage];
}发布于 2014-09-25 03:54:39
以上2个答案在Cocos2d 3.2.1中不起作用
这是针对Cocos2d 3.2.1 +的解决方案
-(UIImage*) takePresentScreenshot
{
[CCDirector sharedDirector].nextDeltaTimeZero = YES;
CGSize size = [[CCDirector sharedDirector] viewSize];
CCRenderTexture *renderTxture = [CCRenderTexture renderTextureWithWidth:size.width
height:size.height];
[renderTxture begin];
[[[CCDirector sharedDirector] runningScene] visit];
[renderTxture end];
return [renderTxture getUIImage];
}
UIImage* screenshot = [self takePresentScreenshot];https://stackoverflow.com/questions/12413460
复制相似问题