2016-08-03 34 views
4

相同的圖像我在資產兩個圖像夾名爲像這樣:的Xcode負載兩個不同的字符串

backgroundImage = @"background.wood"; 
backgroundImageLight = @"background.wood.lighting"; 

在資產的文件夾的名稱是相同的,因爲這些字符串。當我嘗試加載這些圖像時,無論backgroundLight總是加載背景圖像。我不得不將資源文件夾和字符串中的名稱從「background.wood.lighting」更改爲「somedifferentstring」,以便實際加載正確的圖像。這是Xcode的錯誤嗎?爲什麼它爲這些不同的字符串加載相同的圖像?它是否與起點相似?我試圖手動清空緩存,以確保圖像不是預加載的,但也沒有幫助。

UPDATE:

以顯示代碼/加載的圖像:

SKSpriteNode *background = [SKSpriteNode spriteNodeWithImageNamed:backgroundImage]; 
background.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame)); 
background.size = self.frame.size; 
background.zPosition = background_z_order; 

SKSpriteNode *backgroundLight = [SKSpriteNode spriteNodeWithImageNamed:backgroundImageLight]; 
NSLog(@"%@, %@", backgroundImage, backgroundImageLight); 
backgroundLight.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame)); 
backgroundLight.size = self.frame.size; 
backgroundLight.zPosition = background_z_order; 

[mainView addChild:background]; 
[mainView addChild:backgroundLight]; 

更新2:

所有這些負載不同的圖像,所以也許它的第二個 「」將其拋棄idk:

monster.boss.one 
monster.fire.redsun 
monster.lightning.yellowjaw 
monster.normal.greenslither 
+0

請發佈您正在使用的代碼來加載和顯示圖像。 –

+0

請參閱更新 – Minimi

+0

@JeffWolski您無需查看代碼。自己嘗試一下;你會發現這絕對是真的。 – matt

回答

1

最後一個「。」被認爲是文件擴展的開始。爲了與在資產目錄被髮明時將資產從應用包移動到資產目錄的舊項目兼容,可以說@"myImage.jpg"是合法的,如果圖像集名爲myImage,則仍然可以在資產目錄中找到該項目。文件擴展名被剝離並且圖像集仍然被找到。類似地,您的點後綴.lightning正在被剝離,並找到結果background.wood - 這是搜索的結尾。

所以道德是,不要這樣做。使用下劃線而不是點。

+0

事情是,如果我使用單一的。有用。例如,所有這些FO負載不同的圖像: monster.boss.one monster.fire.redsun monster.lightning.yellowjaw monster.normal.greenslither ... – Minimi

+0

你不是想我說什麼。如果你說'a.b.c',我們立即剝去'.c'並嘗試它。如果我們發現'a.b'即搜索結束。 「怪物」​​例子中沒有匹配,但是您在問題中給出的例子中有一個匹配。 – matt

+0

我明白你的意思了。是的,這聽起來可能是原因,我會改變它強調。 – Minimi

相關問題