私の Cocos2D アプリには、ゲームのすべてのオブジェクトを含むスプライト シートがあります。CCLayer クラスの init メソッドで、次のようにします。
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"Objects.plist"];
objectsSheet = [CCSpriteBatchNode batchNodeWithFile:@"Objects.pvr.ccz"];
[self addChild:objectsSheet];
そして、次のように主人公のスプライトを作成します。
mySprite = [[CCSprite spriteWithSpriteFrameName:@"MainImage.png"] retain];
そして、それはうまくロードされます。ビューを離れる前にキャラクターが死んだら、次のようにします。
CCSpriteFrameCache* cache = [CCSpriteFrameCache sharedSpriteFrameCache];
CCSpriteFrame* frame = [cache spriteFrameByName:@"NewImage.png"];
[mySprite setDisplayFrame:frame];
それもうまくいきます。ここでビューを離れ、後でゲーム ビューに戻ります。
そのため、キャラクターの画像を元の画像に戻す必要があるため、次のようにします。
[mySprite setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"MainImage.png"]];
しかし、奇妙なことが起こります。mySprite は空白です。上記の最後のコードは確実に呼び出されますが、何もしません。奇妙なことに、ゲーム ビューに戻った後に作成された新しいスプライトにロードすると、画像が表示されます。古いイメージが記憶に残っていないか何かに関係しています。
なぜこれが起こっているのか、どうすれば修正できるのか誰か知っていますか?
ありがとう!