2011-12-23 5 views
0

私はcocos2dに奇妙なことを言及しています。シーン間のキャッシュをクリーンにすることはできませんか?

私のゲームシーンやメニューシーンでは、私はフレームキャッシュとスプライトシートをキャッシュにロードします。私は、バックゲームにメニューにシーンを交換する際に

[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames]; 
    [[CCTextureCache sharedTextureCache] removeAllTextures]; 

をので、その後、彼は再び、したがってキャッシュをロードdoesntの:

は、私は私のゲームシーンのdeallocメソッドであれば、私はきれいなキャッシュとすることを発見しました彼は必要なフレームを見つけることができなかったエラーを取得します。

このように、フレームをすべてのシーンで一度だけキャッシュに読み込むことができるように見えます。それを削除してシーンに戻すと、再度読み込まれてエラーが発生します。

私のメニューシーンでキャッシュをきれいにしてゲームに戻ってメニューに戻ると、メニューシーンもキャッシュをロードせず、必要なフレームを見つけることができません。

これは興味深いです。それには理由がありますか?または私はどこかここで間違っていますか?

ありがとうございます。

答えて

1

次のようにあなたがnewSceneにoldSceneからシーンを変更した場合、イベントのシーケンスは次のとおりです。

  1. newScene:oldScene
  2. のinit:のdeallocだから、

あなたは、initでスプライトフレームをロードする場合、前のシーンのdeallocでキャッシュをクリアすると、スプライトフレームは新しいシーンでは使用できなくなります。

replaceSceneを新しいシーンで呼び出す直前にキャッシュをクリアすることをお勧めします。

+0

ありがとうございます!それは本当に良い答えです! – Curnelious