zwoptexで作ったplistファイルをcocos2dで読み込んでも表示されない場合の対処
公開日:
:
最終更新日:2014/01/08
cocos2d
記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
こんなコードを書いて
– (void)initSpriteFrameCache {
CCSpriteFrameCache * cache = [CCSpriteFrameCache sharedSpriteFrameCache];
[cache addSpriteFramesWithFile:@”texture.plist” textureFile:@”texture.png”];CCSpriteBatchNode* batch = [CCSpriteBatchNode batchNodeWithFile:@”texture.png”];
[self addChild:batch];CCSprite * blob = [CCSprite spriteWithSpriteFrameName:@”witch.png”];
blob.position = ccp( 160, 240 );
[batch addChild:blob];
}
画面に何も表示されなくてハマったので、メモ。
.plistの読み込み処理を追っかけてみた
// add real frames
for(NSString *frameDictKey in framesDict) {
NSDictionary *frameDict = [framesDict objectForKey:frameDictKey];
CCSpriteFrame *spriteFrame;
if(format == 0) {
float x = [[frameDict objectForKey:@”x”] floatValue];
float y = [[frameDict objectForKey:@”y”] floatValue];
float w = [[frameDict objectForKey:@”width”] floatValue];
float h = [[frameDict objectForKey:@”height”] floatValue];
float ox = [[frameDict objectForKey:@”offsetX”] floatValue];
float oy = [[frameDict objectForKey:@”offsetY”] floatValue];
int ow = [[frameDict objectForKey:@”originalWidth”] intValue];
int oh = [[frameDict objectForKey:@”originalHeight”] intValue];
// check ow/oh
if(!ow || !oh)
CCLOG(@”cocos2d: WARNING: originalWidth/Height not found on the CCSpriteFrame. AnchorPoint won’t work as expected. Regenerate the .plist”);
上記のコードでwidthが取得できず、0が代入されていた。
この前後のコードを追っかけてみたところ、.plistのフォーマットが正しく認識できていなかったことが分かった。あやしい。
zwoptexのPublish Settingsを確認する
そこでzwoptexの設定周りをチェックしてみたら、Publish時の形式を指定する設定が見つかった。
このアイコンをクリック。
Coordinates Formatをチェック
cocos2dになっていなかったので、cocos2dに変更。
これでPuslishし直したら、.plistの読み込みが正常に動作し、スプライトを正しく画面に表示することができた。