Cocos2D 2.0 capturas de pantalla en iOS 6

Tengo una aplicación que toma una captura de pantalla de una escena y la guarda en un file. 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 con que esto funciona en iOS 5, pero he probado esto en iOS 6 y está produciendo capturas de pantalla negras.

No soy un especialist 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 negras en iOS 6.

¿Alguna pista? Gracias.

Gracias

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

+(UIImage*) screenshotWithStartNode:(CCNode*)startNode { [CCDirector shanetworkingDirector].nextDeltaTimeZero = YES; CGSize winSize = [CCDirector shanetworkingDirector].winSize; CCRenderTexture* rtx = [CCRenderTexture renderTextureWithWidth:winSize.width height:winSize.height]; [rtx begin]; [startNode visit]; [rtx end]; return [rtx getUIImage]; } 

Puedes llamar así

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

Esto funciona aquí para Cocos2d V3.

 +(UIImage*) screenshotWithStartNode:(CCNode*)startNode { [CCDirector shanetworkingDirector].nextDeltaTimeZero = YES; CGSize viewSize = [[CCDirector shanetworkingDirector] 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 shanetworkingDirector].nextDeltaTimeZero = YES; CGSize size = [[CCDirector shanetworkingDirector] viewSize]; CCRenderTexture *renderTxture = [CCRenderTexture renderTextureWithWidth:size.width height:size.height]; [renderTxture begin]; [[[CCDirector shanetworkingDirector] runningScene] visit]; [renderTxture end]; return [renderTxture getUIImage]; } UIImage* screenshot = [self takePresentScreenshot]; 

La mejor respuesta funciona para iPads (he probado en iPads v1 hasta 4).

NO funciona para el dispositivo real: iPhone5, iOS7.

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

¡Esa inconsistencia me está volviendo loco!