プログラミングの魔物

エラー、バグ、仕様変更と戦うブログ

cocos2d-x Luaでテクスチャアトラス

今回はこちらのサイトを参考にした。
cocos2d-xにおいてTexture Atlasを利用する方法(iOS, Android)

C++でのコードは次のようになる。以下転載

アプリで画像ファイルを用意する場合、Texture Atlasを利用することで
メモリを大幅に節約することが可能です。
(細かいことはTexture Atlasでググってください。)

さらに

  • TexturePacker
  • zwoptex

などのアトラス作成ツールでは、画像ファイルと共にcocos2d-xのCCSpriteなどで読み込むための情報をplistで書き出してくれるので非常に便利です。

またcocos2d-x上での利用方法も簡単です。


1. plistをキャッシュに読み込む

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("hogehoge.plist");

2. アトラス作成ツールに読み込ませたファイル名を指定しCCSpriteを生成

CCSprite *fuga = CCSprite::spriteWithSpriteFrameName("fugafuga.png");
http://tks2.net/memo/?p=129

※ひょっとしたら現バージョンではspriteWithSpriteFrameNameがcreateWithSpriteFrameNameになるかもしれない。


では、Luaでテクスチャアトラスを読み込んで表示する方法を書いてみる。

CCSpriteFrameCache:sharedSpriteFrameCache():addSpriteFramesWithFile("hogehoge.plist")

local visibleSize = CCDirector:sharedDirector():getVisibleSize()
local hage = CCSprite:createWithSpriteFrameName("hage.png")  --スプライト作成

hage:setPosition(ccp(visibleSize.width / 2, visibleSize.height / 2))
layer:addChild(hage)

C++コードと違い、メソッド呼び出しが「:」で、変数の型は必要としない。

cocos2d-x APIリファレンス