BAD_ACCESS

おもにiOS、ときどき変な電子工作、ガジェット話。

CCSpriteFrameCacheでキャッシュしたフレームでCCSpriteのテクスチャを差し替える

cocos2dで作る iPhone&iPadゲームプログラミング

cocos2dで作る iPhone&iPadゲームプログラミング


前回の記事cocos2d覚え書き便利ツール導入メモ - BAD_ACCESS等でCCSpriteFrameを使って
描画に関するメモリを効率的に利用する方法などを紹介してみた。

実際のゲームをつくる中でアニメーションとまではいかないが、
(自分の場合)CCSpriteの画像を差し替えたいということがよくある。
Google先生に「CCSpriteFrame cache texture 差し替え」とかで検索しても中々ヒットしなかったが、
Stackoverflowでドンピシャな投稿を見つけたのでメモ。

cocos2d iphone - How to switch the image of a CCSprite - Stack Overflow

これは、CCSpriteFrameCache上にキャッシュした(frameの)データから
如何にして画像のtextureだけ取り出して、任意のCCSpriteのtextureと差し替えるかという疑問。
ここでimage1.png....image9.pngの画像をTextureマッピングした情報をキャッシュして読み込み、
spriteの初期画像image1.pngから、image2.pngに差し替える際のコードを示す。
(ボタンのspriteが押された条件によって画像が変わる。といった時に便利かな?)

CCSpriteFrameCache* cache = [CCSpriteFrameCache sharedSpriteFrameCache];
CCSpriteFrame* frame = [cache spriteFrameByName:@"image2.png"];
[sprite setDisplayFrame:frame];

※アニメーションを使えばいいときはアニメーションを使ってください。
アニメーション使うまでもないかなーという場面があまりに多いので記事書いてみました。
ご参考まで。