Cocos2d-x - Android - 某些设备上没有显示相同分辨率的图像

时间:2014-12-09 14:49:44

标签: android c++ cocos2d-x scaling cocos2d-x-3.0

在开发适用于Android的Cocos2d-x游戏时,我们最近将其更新为仅使用一组高质量图像资源(分辨率为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上完美显示。

知道为什么会这样吗?在使用一组高质量图像并根据目标设备的屏幕分辨率相应地缩放它们时,是否还有其他因素需要考虑?

1 个答案:

答案 0 :(得分: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);