2013-07-11 80 views
1

每當我使用的Cocos2D不會自動檢測@ 2X視網膜精靈圖像

sprite = [CCSprite spriteWithFile:@"image.png"]; 

的Cocos2D一直足夠的智能去尋找在非視網膜設備「image.png」和「[email protected]」視網膜設備。

但每當我嘗試動態打造出來的精靈文件名字符串即

int random = arc4random() % 2; 

    switch (random) { 
     case 0: 
      color = @"blue"; 
      break; 
     case 1: 
      color = @"green"; 
      break; 
     default: 
      break; 
    } 

    filename = [[NSString alloc] initWithString:color]; 
    filename = [filename stringByAppendingString:@"Square.png"]; 

    // Sprite should now be either "greenSquare.png" or "blueSquare.png" 
    sprite = [CCSprite spriteWithFile:filename]; 

突然間,我的@ 2個文件被完全忽略 - 和Cocos2d只尋找那些文件=== 「greenSquare.png」,即「[email protected]」永遠不會被拿起,如果「greenSquare.png」不存在(我當時只用視網膜顯示器進行測試),整個應用程序崩潰。

任何想法,爲什麼這種情況正在發生什麼,我能做些什麼來解決這個問題?

(理想情況下,無需手動檢查設備視網膜狀態,然後手動附加@ 2x - 時,因爲我知道那是一個可行的解決方案,它只是似乎並不像正確的)。

謝謝!

回答

6

的cocos2d不使用@ 2倍的命名方案。相反,它使用後綴-hd用於iphone視網膜圖像,-ipad用於ipad圖像,-ipadhd用於ipad視網膜圖像。

例: 「Square.png」 和 「方hd.png」

您還可以啓用備用後綴。當啓用時,它會嘗試按以下順序搜索以下後綴,直到找到一個:

  • 在iPad上HD:iPad的高清的iPad,iPhone HD,資源沒有
  • 分辨率在iPad上:的iPad,iPhone HD,資源沒有
  • 在iPhone HD分辨率:無
  • 分辨率的iPhone HD,資源在Mac HD:無
  • 分辨率在Mac蘋果機HD,蘋果,資源:蘋果,資源,但未得到解決

(如CCFileUtils.h文件記錄)

+1

,完美的工作!我想知道爲什麼原始測試代碼,即sprite = [CCSprite spriteWithFile:@「image.png」];自動檢測到image.png和[email protected] – Salman

1

標準cocos2D上的視網膜圖像是sufix -HD如果你的圖片命名爲「greenSquare.png」,爲cocos2D上視網膜需要名爲「greenSquare-hd.png 「但你可以改變這個標準,並告訴cocos2D上使用sufix @ 2X,你可以這樣做修改AppDelegate.m

搜索線

CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils]; 
[sharedFileUtils setiPhoneRetinaDisplaySuffix:@"-hd"]; 

,改變sufix @」 - HD」改爲@ 「@ 2x」,因此您的代碼可能如下所示:

[sharedFileUtils setiPhoneRetinaDisplaySuffix:@"@2x"]; 

最好的做法是改變你的所有圖片的名稱,替換「@ 2x」不爲「-HD」

+0

@ 2x用於我的cocos2d 2.x項目。爲什麼? – ZYiOS