我使用TexturePacker
制作了两组精灵表,其中一组称为objects-0.plist
/ objects0-png
和objects-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;
}
我该如何解决这个问题?任何帮助表示赞赏。
答案 0 :(得分:1)
想到一个想法,同时写下我在测试发送时才测试过的问题。
问题是我正在直接从文件名中检索Sprite Frame。这意味着,我正在检索objects-0-0.png
并且cocos2d-x
不会自动使用后缀版本。因此,知道这一点,我重新制作/重新编写了.plist
文件,以便两个文件(一个带有后缀和一个没有后缀)具有相同的图像文件名,但是完全不同的图像。 .plist
文件和.png
spritesheets留有后缀。
而不是:
// 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
答案 1 :(得分:1)
您使用的是哪种版本的cocos2d-x?由于不支持2.0.2版本后缀,因此您应该将不同设备的目录用于文件名中的后缀。您可以在cocos2dx示例中查看详细信息here。