2014-05-17 34 views
3

如何創建具有相對路徑的精靈?我的意思是我有幾個文件夾中Resources目錄,如:cocos2d-x 3.0 - 通過相對路徑創建精靈

  • SD
  • HD
  • ....

一個這個目錄設置爲在資源應該待的地方擡頭看

std::vector<std::string> resDirOrders; 
if (device is hd) 
     resDirOrders.push_back("hd") 
FileUtils::getInstance()->setSearchResolutionsOrder(resDirOrders); 

現在在每個abov Ë上述目錄我有很多其他目錄,如:

  • intro_popup
  • outro_popup
  • MAIN_MENU
  • top_bar
  • 遊戲中
  • ....

在這些我放置圖像的目錄。和圖像的名稱可以碰撞,只要我可以有coin.pngmain_menu,top_baringame這是不同的圖像。迄今爲止,我想能夠創建一個像這樣的精靈:

Sprite::create("ingame/coin.png"); 
Sprite::create("top_bar/coin.png"); 

但它不起作用。它只是沒有找到文件coin.png。

我該如何解決這個問題?我在Windows上使用cocos2d-x 3.0,但它也應該在iOS和Android上處理。

回答

5

文件夾結構必須是這樣的:

Res/ 
----hd/ 
----sd/ 
----ingame/ 
    ----hd/ 
    ----sd/ 
----top_bar/ 
    ----hd/ 
    ----sd/ 

您應該添加res文件夾到項目,並確保「創建任何添加的文件夾文件夾引用」被選中。

設置搜索路徑和搜索解析順序:

Size screenSize = Director::getInstance()->getOpenGLView()->getFrameSize(); 

std::vector<std::string> resDirOrders; 

std::vector<std::string> searchPaths = FileUtils::getInstance()->getSearchPaths(); 
searchPaths.insert(searchPaths.begin(), "Res"); 
FileUtils::getInstance()->setSearchPaths(searchPaths); 

if (screenSize.width > 1024) { 
    resDirOrders.push_back("hd"); 
} 
else{ 
    resDirOrders.push_back("sd"); 
} 

FileUtils::getInstance()->setSearchResolutionsOrder(resDirOrders); 

然後你就可以用Sprite::create("ingame/coin.png");

+0

創建精靈謝謝你的男人。你救了我的命。爲了理解這項工作的原因,請確認'setSearchResolutionsOrder'是一個在圖像名稱之前的圖像路徑之間插入的目錄,不是嗎? – Narek