0

Mein Projekt verwendet Lokalisierung.Bild (mit create group) zeigt nicht auf dem Gerät - Während (als Referenz) funktioniert

Wenn ich Bilder mit der Option "Gruppe erstellen" hinzufüge und den folgenden Code tue - erscheinen die Bilder im Simulator gut, aber nicht auf dem echten Gerät.

***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); 

während, wenn ich hinzufügen, die Bilder durch die Option „Ordnerverweise erstellen“ die Bilder auf beiden Simulator & Gerät zeigen sich aber die Lokalisierung beeinträchtigt wird und der Code wird wie folgt aus:

***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); 

aber das ist nicht was ich will.

Gibt es einige Einstellungen im Projekt, die ich vermisse, die dazu führen, dass Bilder nicht auf dem Gerät mit der "Probe 1" angezeigt werden? oder wenn ich mit dem Code selbst etwas falsch mache?

p.s. Wenn es möglich ist, die Bildlokalisierung auch mit der Option "Ordner nach Referenz" beizubehalten, wäre das auch schön.

Antwort

1

Ordnerverweise sind der richtige Weg.

Sie können einen Suchpfad zu den Dateidienstprogrammen basierend auf dem aktuellen Gebietsschema hinzufügen.

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

Becomes:

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

Der obige Pfad wird dann so durchsucht werden

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

Die offensichtliche Einschränkung ist, dass Bilder für jede Lokalisierung identische Namen haben müssen.

Wenn Sie das Gebietsschema im laufenden Betrieb ändern müssen, sollten Sie stattdessen FileUtils :: setSearchPaths() verwenden, um die zuvor festgelegten Einstellungen zu überschreiben.