0

我在设置位置并随后从精灵数组中绘制单个元素时遇到问题。我对独立精灵没有任何问题,但我在阵列上被绊倒了。

简单的例子来说明问题,真实的代码是正确的,但同样的概念——

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 的网格阵列,所以自然会有一些重复使用。

Sprite 数组是否能够具有每个索引位置...?我能以某种方式解决这个问题吗?

我能够通过循环并设置位置然后随后绘制每个索引来回避这一点,但是现在我需要根据位置在另一个函数中进行计算,并且我的位置对于所有元素都是相同的

干杯并感谢您的帮助!:)

4

1 回答 1

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.
}

然后您可以相应地修改位置。

于 2013-07-18T19:33:59.250 回答