我使用 TexturePacker
制作了两套 spritesheet,一套叫做 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" );
}
然后,我尝试使用 .plist
文件中的一个文件制作一个 CCSprite
对象。
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;
}
我该如何解决这个问题?感谢您的帮助。
最佳答案
在写问题时想到了一个想法,我只在它发送并且有效时进行了测试。
问题是我直接从文件名中检索 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
关于c++ - CCSpriteFrameCache 无法正确检索后缀为 '-ipad' 的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13015127/