CCSpriteFrameCache неправильно загружает изображения с суффиксом -ipad

Я сделал два набора спрайт-листов, используя 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

Решение

Мысль об идее при написании вопроса, который я проверял, только когда он был отправлен, и это сработало.

Проблема в том, что я получаю кадр 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
1

Другие решения

Какую версию cocos2d-x вы используете? Начиная с версии 2.0.2 суффиксы не поддерживаются, и вы должны использовать каталоги для разных устройств против суффиксов в именах файлов. Вы можете увидеть детали Вот и в примерах cocos2dx.

1

По вопросам рекламы [email protected]