图像(使用创建组)不显示在设备上 - 虽然(作为参考)工作正常

image (using create group) doesnot shows on device - While (as reference) works fine

我的项目使用本地化。

当我使用 "create group" 选项添加图像并执行以下代码时 - 图像在模拟器上显示正常,但在真实设备上显示不出来。

***Sample 1:***

MenuItemImage *leaderboard = MenuItemImage::create("btnLeaderboard.png", "btnLeaderboard.png", CC_CALLBACK_1(MenuLayer::onMenuItemClicked, this));
leaderboard->setTag(MenuItemTag::LEADERBOARD);
leaderboard->setPosition(-getContentSize().width/2 + (leaderboard->getContentSize().width * 0.75)/2, soundItem->getPositionY());
leaderboard->setScale(0.7);
items.pushBack(leaderboard);
menu *menu = Menu::createWithArray(items);
menu->setTag(212);
this->addChild(menu);

而如果我通过 "create folder references" 选项添加图像,图像会同时显示在模拟器和设备上,但 localisation 将受到损害,代码将变成这样:

***Sample 2:***

MenuItemImage *leaderboard = MenuItemImage::create("images/en.lproj/btnLeaderboard.png", "images/en.lproj/btnLeaderboard.png", CC_CALLBACK_1(MenuLayer::onMenuItemClicked, this));
leaderboard->setTag(MenuItemTag::LEADERBOARD);
leaderboard->setPosition(-getContentSize().width/2 + (leaderboard->getContentSize().width * 0.75)/2, soundItem->getPositionY());
leaderboard->setScale(0.7);
items.pushBack(leaderboard);
menu *menu = Menu::createWithArray(items);
menu->setTag(212);
this->addChild(menu);

但这不是我想要的。

我是否缺少项目中的某些设置,导致图像无法显示在带有 "sample 1" 的设备上?或者如果我对代码本身做错了什么?

p.s。如果也可以使用 "folder by reference" 选项保持图像本地化,那也很好。

文件夹引用是正确的选择。

您可能需要考虑根据当前区域设置向文件实用程序添加搜索路径。

auto fileUtils = cocos2d::FileUtils::getInstance();
std::string localeImageDir = "en.lproj";
fileUtils->addSearchPath("images/" + locImageDir);

以上路径将被搜索为:

auto explicit = Sprite::create("images/en.lproj/btnLeaderboard.png");

变成:

auto implicit = Sprite::create("btnLeaderboard.png");

明显的限制是每个本地化的图像必须具有相同的名称。

如果您需要即时更改语言环境,那么您可能需要使用 FileUtils::setSearchPaths() 来覆盖之前的设置。