ページへ戻る

− Links

 印刷 

cocos2d-x​/ver2系CCSpriteFrameCacheのsharedSpriteFrameCacheでNULL のバックアップソース(No.3) :: NJF Wiki

xpwiki:cocos2d-x/ver2系CCSpriteFrameCacheのsharedSpriteFrameCacheでNULL のバックアップソース(No.3)

« Prev[5]  Next »[6]
cocos2d-xのver2系CCSpriteFrameCacheのsharedSpriteFrameCacheを使ってフレームなどを取得していると、時々NULLが返ります。例えば、

 CCSpriteFrame *frame;
 CCSpriteFrameCache *csfc =CCSpriteFrameCache::sharedSpriteFrameCache();
 frame = csfc->spriteFrameByName(IMG_FRM_IMG);

とした時に、その名前のフレームがあるにもかかららずframeにNULLが入ることがあります。

どうもキャッシュなのでいつの間にかメモリが解放されているようです。
frameがNULLなら以下のような処理を入れる必要があるようです。

 CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(IMG_TEXTURE_PLT, IMG_TEXTURE_PNG);

しかし、これは対症療法にすぎません。キャッシュが破棄されると言うことは、メモリが足りなくなっていると言うことなので、その対策も必要となります。具体的に怪しいのは、スプライトシートに関連して、やはり一度に読み込む画像の容量あたりでしょう。

メモリ関連の処理のせいか、特定のバージョン、OS、機種などでしか起こらないので、結構はまりました。


« Prev[5]  Next »[6]