iphone ios ipad cocos2d-iphone

iphone - Imágenes de Cocos2D 2.0 en iOS 6



ipad cocos2d-iphone (4)

Tengo una aplicación que toma una captura de pantalla de una escena y la guarda en un archivo. Tengo esto funcionando y la aplicación está en la tienda. Hoy, he descargado iOS 6 y el método que estoy usando ya no funciona. Probé todo lo que sé para que funcione, busqué en Google y encontré esto:

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

Los usuarios parecen estar de acuerdo en que esto está funcionando en iOS 5, pero lo he probado en iOS 6 y está produciendo capturas de pantalla en negro.

No soy especialista en Cocos2D, así que no puedo decir exactamente qué está mal con el código de este tipo. el autor tiene un proyecto de muestra en github e incluso su proyecto está produciendo capturas de pantalla en negro en iOS 6.

¿Alguna pista? Gracias.

Gracias


No estoy seguro de qué es lo que hace la versión de GitHub pero este código tomará una captura de pantalla y lo probé en iOS 6 y funciona bien.

+(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]; }

Puedes llamarlo así

CCScene *scene = [[CCDirector sharedDirector] runningScene]; CCNode *n = [scene.children objectAtIndex:0]; UIImage *img = [AppController screenshotWithStartNode:n];


Esto aquí funciona para 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]; }


Más de 2 respuestas no trabajadas en Cocos2d 3.2.1

Aquí está la solución para 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];


La respuesta principal funciona para iPads (he probado en iPads v1 a 4).

NO funciona para el dispositivo real: iPhone5, iOS7.

Sin embargo, ¡funciona para simuladores de un iPhone 5!

¡Esa inconsistencia me está volviendo loco!