Cocos2d-x - Android - некоторые изображения не отображаются на определенных устройствах с тем же разрешением

При разработке нашей игры Cocos2d-x для Android мы недавно обновили ее, чтобы использовать только один набор высококачественных изображений (разрешение 1536 x 2272), а не несколько наборов изображений для разных разрешений экрана, и используя Cocos2d-x. setContentScaleFactor», позволяющий масштабировать изображение высокого качества в соответствии с разрешением экрана целевого устройства, например так:

resDirOrders.push_back( "ipadhd" );
CCSize resourceSize = CCSizeMake(1536, 2272);
director->setContentScaleFactor(resourceSize.height/frameSize.height);
fileUtils->setSearchPaths(resDirOrders);

Как ни странно, при тестировании игры мы заметили, что некоторые изображения, такие как кнопки меню, логотип игры, игровой персонаж, отображаются идеально, но другие изображения, такие как прокручиваемый фон, заставка, не отображаются вообще.

Мы думали, что такие проблемы могут возникнуть на устройствах с непроверенным разрешением экрана, но, как ни странно, например, некоторые изображения совершенно пусты / не отображаются на HTC ONE X (разрешение экрана: 720 x 1280), но отображаются идеально подходит для Moto X первого поколения с таким же разрешением экрана. Та же проблема была замечена при тестировании с двумя планшетами Android; некоторые изображения полностью пусты или не отображаются на Lenovo IdeaTab A1000 (разрешение экрана: 600 x 1024), но прекрасно отображаются на Samsung Galaxy Tab 3 с таким же разрешением экрана.

Любая идея, почему это может происходить? Существуют ли другие факторы, которые мы должны учитывать при использовании одного набора высококачественных изображений и их соответствующем масштабировании в зависимости от разрешения экрана целевого устройства?


person Sandeep    schedule 09.12.2014    source источник


Ответы (1)


Это из-за размеров изображения. Вы используете изображения размером 1536 x 2272, которые не будут отображаться на некоторых телефонах с низким разрешением.

Вы должны поставить изображения как минимум еще на одно разрешение. возможно, 50% размера, который вы используете в настоящее время.

CCSize resourceSize;

if (screenSize.height=>2272)
{
resourceSize = CCSizeMake(1536, 2272);
resDirOrders.push_back( "ipadhd" );
}
else
{
resourceSize = CCSizeMake(768, 1136);
resDirOrders.push_back( "ipad" );
}

director->setContentScaleFactor(resourceSize.height/frameSize.height);
fileUtils->setSearchPaths(resDirOrders);
person Shoaib    schedule 10.12.2014
comment
Спасибо за быстрый ответ Шоаиб! извините, я был в путешествии и не имел доступа к сети; да, изображения меньшего размера помогли, и наконец-то оно заработало!! Кроме того, каковы рекомендации по использованию setDesignResolutionSize? Нужно ли его использовать в этом случае? или это обязательно, чтобы использовать его всегда? - person Sandeep; 16.12.2014
comment
Я думаю, вы должны использовать setDesignResolutionSize во всех случаях. - person Shoaib; 16.12.2014