ページへ戻る

− Links

 印刷 

cocos2d-x​/ver2系CCSpriteFrameCacheのsharedSpriteFrameCacheでNULL のバックアップの現在との差分(No.1) :: NJF Wiki

xpwiki:cocos2d-x/ver2系CCSpriteFrameCacheのsharedSpriteFrameCacheでNULL のバックアップの現在との差分(No.1)

  Next »[4]
1: 2018-05-05 (土) 22:15:34 njf[5] ソース[6] バックアップ No.1 を復元して編集[7] 現: 2018-05-06 (日) 14:14:39 njf[5] ソース[8] 編集[9]
Line 1: Line 1:
-sharedSpriteFrameCache+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); 
 + 
 +しかし、これは対症療法にすぎません。キャッシュが破棄されると言うことは、メモリが足りなくなっていると言うことなので、その対策も必要となります。放置するとやがてアプリがクラッシュする可能性があります。 
 + 
 +私の場合は一枚のスプライトシートのサイズが大きすぎました。あまり使っていない画像をスプライトシートから分離し、別途読み込みするようにすると、NULLが返ることはなくなりました。 
 + 
 +メモリ関連の処理のせいか、特定のバージョン、OS、機種などでしか起こらないので、結構はまりました。
  Next »[4]