2013-07-18 62 views
0

我在設置精靈位置並隨後從精靈陣列中繪製單個元素時遇到問題。我對獨立的精靈沒有任何問題,但是我被絆倒在陣列上。XNA - 爲每個索引設置一個精靈陣列的位置

簡單的例子來說明這個問題,真正的代碼是正確的,但同樣的概念 -

myVar[0]=myImg; 
myVar[0].Position.X=300; 
myVar[0].Position.Y=300; 
myVar[1]=myImg; 
myVar[1].Position.X=400; 
myVar[1].Position.Y=400; 

如果我去,現在這些畫中,只有myVar的[1] @ 400是畫,因爲myVar的[0]也採取了同樣的立場。在多個元素中使用相同的圖像時,這只是一個問題。本質上,我使用5個不同的平鋪圖像繪製一個20x20的網格數組,所以自然會有一些重用。

是雪碧陣列能夠具有每個索引位置的......?我能以某種方式解決這個問題嗎?

我能夠通過循環和設定位置隨後每指數繪製迴避這個較早,但現在我需要基於位置採取另一個函數的計算,我的立場是所有元素相同

乾杯&感謝您的幫助! :)

回答

0

這裏的問題是,您多次引用一個對象。

myVar的[0]和myVar的[1]都指向相同的存儲器位置。你最可能想做的是爲每個條目創建一個新的Sprite。

for (int i = 0; i < myVar.length; i++) { 
    myVar[i] = new Sprite(<your img>);//This will ensure you have a different 
            //memory location for each Sprite object 
            //but keep the same image. 
} 

然後您可以相應地修改位置。

+0

感謝您的幫助。 XNA特定的解決方案涉及使用包含文件名的字符串數組,並且我使用sprite從字符串數組中隨機選擇一個文件名,爲每個myVar索引加載新的Sprites。現在完美工作。 :) – CLogan