0

私はCocos2D2.0を搭載したiPad用に開発しています。

私はこれらの行を持っています:

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"atlas.plist"];
CCSpriteBatchNode *batchNode = [CCSpriteBatchNode batchNodeWithFile:@"atlas.png"];
[self addChild:batchNode];

CCSprite *mySprite = [CCSprite spriteWithFrameName:@"white.png"];

このエラーで惨めに失敗します:

Cocos2d:CCSpriteFrameCache:フレーム'white.png'が見つかりません* -[CCSprite initWithSpriteFrame:]、/ Users / myUser / Documents / MyApp / MyApp / libs / cocos2d / CCSprite.m:212**でアサーションが失敗しました

TexturePackerを使用してplistを生成しました。TexturePackerは、atlas-ipadhd.plis、atlas-ipadhd.png、atlas.plist、atlas.pngの4つのファイルを作成しました。

white-ipadhd.pngは2x2の白い画像です。white.pngは1x1の白い画像です。

これはatlas-ipadhdのコンテンツです

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>frames</key>
        <dict>
            <key>white-ipadhd.png</key>
            <dict>
                <key>frame</key>
                <string>{{162,2},{2,2}}</string>
                <key>offset</key>
                <string>{0,0}</string>
                <key>rotated</key>
                <false/>
                <key>sourceColorRect</key>
                <string>{{0,0},{2,2}}</string>
                <key>sourceSize</key>
                <string>{2,2}</string>
            </dict>
            <key>bgNormal-ipadhd.png</key>
            <dict>
                <key>frame</key>
                <string>{{2,2},{348,78}}</string>
                <key>offset</key>
                <string>{0,0}</string>
                <key>rotated</key>
                <true/>
                <key>sourceColorRect</key>
                <string>{{0,0},{348,78}}</string>
                <key>sourceSize</key>
                <string>{348,78}</string>
            </dict>
            <key>bgPressed-ipadhd.png</key>
            <dict>
                <key>frame</key>
                <string>{{82,2},{348,78}}</string>
                <key>offset</key>
                <string>{0,0}</string>
                <key>rotated</key>
                <true/>
                <key>sourceColorRect</key>
                <string>{{0,0},{348,78}}</string>
                <key>sourceSize</key>
                <string>{348,78}</string>
            </dict>
        </dict>
        <key>metadata</key>
        <dict>
            <key>format</key>
            <integer>2</integer>
            <key>realTextureFileName</key>
            <string>atlas-ipadhd.png</string>
            <key>size</key>
            <string>{256,512}</string>
            <key>smartupdate</key>
            <string>$TexturePacker:SmartUpdate:f709325b7d140d102cd10dd90ef475b0$</string>
            <key>textureFileName</key>
            <string>atlas-ipadhd.png</string>
        </dict>
    </dict>
</plist>

これはatlas.plistです

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>frames</key>
        <dict>
            <key>white.png</key>
            <dict>
                <key>frame</key>
                <string>{{84,2},{1,1}}</string>
                <key>offset</key>
                <string>{0,0}</string>
                <key>rotated</key>
                <false/>
                <key>sourceColorRect</key>
                <string>{{0,0},{1,1}}</string>
                <key>sourceSize</key>
                <string>{1,1}</string>
            </dict>
            <key>bgNormal.png</key>
            <dict>
                <key>frame</key>
                <string>{{2,2},{174,39}}</string>
                <key>offset</key>
                <string>{0,0}</string>
                <key>rotated</key>
                <true/>
                <key>sourceColorRect</key>
                <string>{{0,0},{174,39}}</string>
                <key>sourceSize</key>
                <string>{174,39}</string>
            </dict>
            <key>bgPressed.png</key>
            <dict>
                <key>frame</key>
                <string>{{43,2},{174,39}}</string>
                <key>offset</key>
                <string>{0,0}</string>
                <key>rotated</key>
                <true/>
                <key>sourceColorRect</key>
                <string>{{0,0},{174,39}}</string>
                <key>sourceSize</key>
                <string>{174,39}</string>
            </dict>
        </dict>
        <key>metadata</key>
        <dict>
            <key>format</key>
            <integer>2</integer>
            <key>realTextureFileName</key>
            <string>atlas.png</string>
            <key>size</key>
            <string>{128,256}</string>
            <key>smartupdate</key>
            <string>$TexturePacker:SmartUpdate:c3c8dd4637d116b049a6b55c8ad175d0$</string>
            <key>textureFileName</key>
            <string>atlas.png</string>
        </dict>
    </dict>
</plist>

これはatlas-ipadhd.pngとatlas.pngです

ここに画像の説明を入力してください ここに画像の説明を入力してください

これを何時間も見ても、これらのファイルに問題は見つかりませんでした...しかし、それでも壊滅的にクラッシュします。

手がかりはありますか?ありがとう。

4

1 に答える 1

1

スプライトフレーム名は、atlas-ipadhd.plistのwhite.pngである必要があります。

馬の口から真っ直ぐに:

+(id)spriteWithSpriteFrameName:(NSString*)spriteFrameName
{
    CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:spriteFrameName];

    NSAssert1(frame!=nil, @"Invalid spriteFrameName: %@", spriteFrameName);
    return [self spriteWithSpriteFrame:frame];
}

デバイス固有のキーを使用してフレーム名を修正する試みはありません。このようにして、コードは完全にデバイスに依存しないままにすることができます。適切なデバイス固有のファイル名をリソース(テクスチャとplist)に提供するだけです。

于 2012-06-10T14:48:52.037 に答える