Позиция за настройка на 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