0

を使用して 2 セットのスプライトシートを作成しました。1つは/および/TexturePackerと呼ばれます。それぞれに次の画像があります。objects-0.plistobjects0-pngobjects-0-ipad.plistobjects-0-ipad.png

// objects-0.plist / objects-0.png
object-0-0.png : 50x50 PNG file
object-0-1.png : 50x50 PNG file
object-0-2.png : 50x50 PNG file

// objects-0-ipad.plist / objects-0-ipad.png
object-0-0-ipad.png : 100x100 PNG file
object-0-1-ipad.png : 100x100 PNG file
object-0-2-ipad.png : 100x100 PNG file

これらを次のようにロードしましたCCSpriteFrameCache

bool AnimTest::init( ) {
    if ( !CCLayer::init( ) ) return false;

    CCSpriteFrameCache::sharedSpriteFrameCache( ) -> addSpriteFrameWithFile( "objects-0.plist" );
}

次に、CCSpriteファイル内のファイルの 1 つを使用してオブジェクトを作成してみました.plist

bool AnimTest::init( ) {
    if ( !CCLayer::init( ) ) return false;

    CCSpriteFrameCache::sharedSpriteFrameCache( ) -> addSpriteFrameWithFile( "objects-0.plist" );

    CCSprite * testSprite = CCSprite::createWithSpriteFrameName( "object-0-0.png" );
    this -> addChild( testSprite );

    return true;
}

これを iPod/iPhone から実行すると、問題なく動作します。ただし、これを iPad から実行すると、ファイル名が無効でCCSprite::createWithSpriteFrameName( )あるというメッセージがスローされます。assert

-ipadただし、サフィックス付きのファイルを明示的に使用すると、エラーなしで正常に動作します。

bool AnimTest::init( ) {
    if ( !CCLayer::init( ) ) return false;

    CCSpriteFrameCache::sharedSpriteFrameCache( ) -> addSpriteFrameWithFile( "objects-0-ipad.plist" );

    CCSprite * testSprite = CCSprite::createWithSpriteFrameName( "object-0-0-ipad.png" );
    this -> addChild( testSprite );

    return true;
}

どうすればこれを修正できますか? どんな助けでも大歓迎です。

4

2 に答える 2

1

送信されたときにのみテストして機能した質問を書きながら、アイデアを考えました。

問題は、スプライト フレームをファイル名から直接取得していることです。つまり、取得objects-0-0.pngcocos2d-xていて、サフィックス付きのバージョンを自動的に使用しません。.plistそれで、それを知って、2つのファイル(1つはサフィックス付き、もう1つはサフィックスなし)が同じ画像ファイル名を持つように、ファイルを作り直し/書き直しましたが、まったく異なる画像です。.plistファイルとスプライトシートには.pngサフィックスが付いています。

それ以外の:

// objects-0.plist / objects-0.png
object-0-0.png : 50x50 PNG file
object-0-1.png : 50x50 PNG file
object-0-2.png : 50x50 PNG file

// objects-0-ipad.plist / objects-0-ipad.png
object-0-0-ipad.png : 100x100 PNG file
object-0-1-ipad.png : 100x100 PNG file
object-0-2-ipad.png : 100x100 PNG file

内のすべてのファイルの名前.plistを、接尾辞を使用しないものに変更します。

// objects-0.plist / objects-0.png
object-0-0.png : 50x50 PNG file
object-0-1.png : 50x50 PNG file
object-0-2.png : 50x50 PNG file

// objects-0-ipad.plist / objects-0-ipad.png
object-0-0.png : 100x100 PNG file
object-0-1.png : 100x100 PNG file
object-0-2.png : 100x100 PNG file
于 2012-10-22T16:04:41.207 に答える
1

cocos2d-x のどのバージョンを使用していますか? 2.0.2 バージョンのサフィックスはサポートされていないため、ファイル名のサフィックスに対して異なるデバイスのディレクトリを使用する必要があります。詳細はこちらと cocos2dx の例で確認できます。

于 2012-10-22T16:07:48.340 に答える