0

我使用 制作了两组精灵表TexturePacker,一组称为objects-0.plist/objects0-pngobjects-0-ipad.plist/ objects-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使用文件中的一个文件制作一个对象.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

在写这个问题时想到了一个想法,我只在它被发送并且它工作时测试过。

问题是我直接从文件名中检索 Sprite Frame。意思是,我正在检索objects-0-0.png并且cocos2d-x不会自动使用后缀版本。因此,知道了这一点,我重新制作/重新编写了.plist文件,以便两个文件(一个带后缀,一个不带后缀)具有相同的图像文件名,但图像完全不同。.plist文件和spritesheets.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 回答