私はこの質問からのヒントを使用していますstackoverflow.com/questions/12413460 それは仕事です。私の問題は、アプリケーションが再起動しないか、再構築されていないときにイメージが更新されないことです。スクリーンショットを作成する方法を使用します。私は同じ機能を持っています:タッチスクリーを使用すると、スクリーンショットがドキュメントディレクトリに保存されます。ユーザーは2番目、2番目のスクリーンショットを保存にタッチします。など。しかし、私のアプリでは、キャッシュまたはバッファリングされているため、毎回最初のタッチのスクリーンショットのみが作成されます。
-(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];
}
ユーザーがタッチスクリーンを使用するときに呼び出します(例)
- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
CCNode *n = [[[CCDirector sharedDirector] runningScene].children objectAtIndex:0];
UIImage *img = [self screenshotWithStartNode:n];//this image always same by one, same when user touch screen first time
CCSprite *spriteTemp = [CCSprite spriteWithCGImage:img.CGImage key:@"image"];
[self addChild:spriteTemp];
}
画面上のアイテムは、時間の異なる位置にあります。画面を最初にタッチすると正しい画像が得られますが、他のすべてのタッチは最初の画像としてスクリーンショットを作成し、線量は変化しません。
多分それはバッファCCRenderTextureだと思いますか?または画像キャッシュ?私は何をしますか?
[img release]を試し、タッチ後にCGImageRelease(img.CGImage)を試しましたが、アプリがクラッシュします。