我的项目使用本地化。
当我使用&#34添加图像时;创建组"选项并执行以下代码 - 图像显示在模拟器上,但不在真实设备上。
***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);
如果我按&#34添加图像,则创建文件夹引用"选项图像显示在模拟器和放大器上设备,但本地化将受到损害,代码将变为如下:
***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);
但这不是我想要的。
项目中是否有一些设置缺失导致图像无法显示在"样本1" ?或者如果我对代码本身做错了什么?
P.S。如果可以通过参考文献"文件夹保持图像本地化"选项以及那也很不错。
答案 0 :(得分:1)
文件夹参考是可行的方法。
您可能需要考虑根据当前区域设置向文件实用程序添加搜索路径。
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()来覆盖之前设置的内容。