Положение настройки 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] также занимает ту же позицию. Это проблема только тогда, когда одно и то же изображение используется в нескольких элементах. По сути, я рисую сетку размером 20x20 пикселей, используя только 5 разных изображений плитки, поэтому, естественно, некоторые из них будут использоваться повторно.

Может ли массив Sprite иметь позицию индекса ...? Могу ли я как-нибудь обойти это?

Раньше мне удавалось обойти это, перебирая и задавая позицию, а затем рисуя по индексу, но теперь мне нужно выполнить вычисления в другой функции на основе позиции, и моя позиция одинакова для всех элементов.

Ура и спасибо за любую помощь! :)


person CLogan    schedule 18.07.2013    source источник


Ответы (1)


Проблема здесь в том, что вы ссылаетесь на один объект несколько раз.

myVar [0] и myVar [1] указывают на одну и ту же ячейку памяти. Скорее всего, вы захотите создать новый спрайт для каждой записи.

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

Затем вы можете соответствующим образом изменить позиции.

person kumar5    schedule 18.07.2013
comment
Спасибо за помощь. Конкретное решение XNA включает использование массива строк, содержащих имена файлов, и я загружаю новые спрайты по индексу myVar, используя спрайт с именем файла из случайного индекса из массива строк. Теперь работает отлично. :) - person CLogan; 19.07.2013