7

我有一个应用程序可以截取场景的屏幕截图并将其保存到文件中。我有这个工作,应用程序在商店里。今天,我已经下载了 iOS 6,但我使用的方法不再有效。我测试了所有我知道的让它工作,谷歌搜索并发现了这个:

http://www.cocos2d-iphone.org/forum/topic/37809?replies=22#post-180983

用户似乎同意这适用于 iOS 5,但我已经在 iOS 6 上对此进行了测试,它正在生成黑色屏幕截图。

我不是 Cocos2D 方面的专家,所以我不能确切地说出这个人的代码有什么问题。作者在 github 上有一个示例项目,甚至他的项目也在 iOS 6 上生成黑色屏幕截图。

有什么线索吗?谢谢。

谢谢

4

4 回答 4

33

我不确定 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];
于 2012-09-13T22:19:45.633 回答
2

这适用于 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-05-12T18:32:25.840 回答
0

以上 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];
于 2014-09-24T19:54:39.133 回答
0

最佳答案适用于 iPad(我已经在 iPad v1 到 4 上进行了测试)。

它不适用于实际设备:iPhone5、iOS7。

但是,它确实适用于这种 iPhone 5 的模拟器!

这种不一致快把我逼疯了!

于 2014-12-17T03:29:06.210 回答