2013-07-18 31 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