2012-10-15 35 views
0

我正在使用cocos2d進行遊戲:我想根據iOS設備加載不同的圖像。我已經使用的一種方法是在init方法中檢查設備,然後將圖像添加到同一個ccsprite對象中。如何根據iOS設備在cocos2d中加載不同的圖像?

但它很長,很難管理。我認爲我應該做的是爲所有具有相同名稱的設備創建映像並將它們放在不同的文件夾中;在應用程序啓動時只需檢查設備並設置與iOS設備匹配的路徑。 e.g

圖像/ iphone/abc.png
圖像/ iPad的/ abs.png

如何如何從不同的路徑添加子?

回答

0

您可以在運行時選擇圖像:

UIImage *image; 

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    image = // Load iPad image here 
else 
    image = // Load iPhone image here 

當然,這是一個痛苦的,如果你在代碼中任何地方使用它,所以你可能只需添加上UIImage或宏的輔助功能,類別對於這一點,即

+(UIImage *)deviceDependentImageWithName:(NSString *)name { 
    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? /* iPadImage */ : /* iPhoneImage */; 
} 

,如果你按照你的命名規則一樣把它們放在不同的文件夾(請確保這些目錄將在分佈存在,不只是複製到頂層目錄後一種方法效果特別容易如通過默認T)。添加「-iPhone」或「-iPad」可能同樣適用,無需擔心目錄。

+0

這個問題是特定的cocos2d。它不使用UIImages –

+0

但是在某些時候,圖像必須加載一個給定的名字,我想......所以這種方法很容易被採用。但是如果有@Setrio建議的簡單的「原生」命名解決方案,我會採取這種方法。 :) – Eiko

+0

科科斯已經提供了一個解決方案,它似乎是OP不知道它。另一個答案是正確的,只是有點不完整。 –

3

如果你使用的是cocos2d 2.0,你可以使用-ipad後綴。事實上,你有-hd,-ipad和-ipadhd

+0

它在模擬器上工作,但不在設備上 –

+0

這可能是因爲模擬器(<6.0)不是關鍵敏感的,因此請檢查您是否使用確切名稱加載映像作爲文件。 – Setrio

相關問題