Я сделал два набора спрайт-листов, используя 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;
}
Как я могу это исправить? Любая помощь приветствуется.
Мысль об идее при написании вопроса, который я проверял, только когда он был отправлен, и это сработало.
Проблема в том, что я получаю кадр Sprite непосредственно из имени файла. Я имею в виду objects-0-0.png
а также cocos2d-x
не использует автоматически версию с суффиксом. Итак, зная это, я переписал / переписал .plist
файл, так что два файла (один с суффиксом, а другой без суффикса) имеют одинаковые имена файлов изображений, но совершенно разные изображения. .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
Какую версию cocos2d-x вы используете? Начиная с версии 2.0.2 суффиксы не поддерживаются, и вы должны использовать каталоги для разных устройств против суффиксов в именах файлов. Вы можете увидеть детали Вот и в примерах cocos2dx.