首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS 6上的Cocos2D 2.0屏幕截图

iOS 6上的Cocos2D 2.0屏幕截图
EN

Stack Overflow用户
提问于 2012-09-14 03:30:03
回答 4查看 4.9K关注 0票数 7

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

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

用户似乎一致认为这在iOS 5上是有效的,但我已经在iOS 6上测试过了,它产生了黑色屏幕截图。

我不是Cocos2D方面的专家,所以我不能说这个人的代码到底出了什么问题。作者在github上有一个样例项目,甚至他的项目都是在iOS 6上制作黑色截图。

有什么线索吗?谢谢。

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-14 06:19:46

我不确定GitHub版本是做什么的,但这段代码会截屏,我刚刚在iOS 6上测试了它,它工作得很好。

代码语言:javascript
运行
复制
+(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];
}

你可以这样叫它

代码语言:javascript
运行
复制
CCScene *scene = [[CCDirector sharedDirector] runningScene];
CCNode *n = [scene.children objectAtIndex:0];
UIImage *img = [AppController screenshotWithStartNode:n];
票数 33
EN

Stack Overflow用户

发布于 2014-05-13 02:32:26

这在这里适用于Cocos2d V3。

代码语言:javascript
运行
复制
+(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];
}
票数 2
EN

Stack Overflow用户

发布于 2014-09-25 03:54:39

以上2个答案在Cocos2d 3.2.1中不起作用

这是针对Cocos2d 3.2.1 +的解决方案

代码语言:javascript
运行
复制
-(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];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12413460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档