PDA

Просмотр полной версии : Использование ссылок


Arsenium
05.06.2007, 16:08
Хочу сделать игру, где на игровом поле могут находиться элементы(картинки) определенных типов.

Создаю ассоциированный массив имя-[Loader].

var imageTypes:Array = new Array();
for each (var type:XML in imageTypeXML.element) {
imageTypes[String(type.attribute("name"))]=new Loader();
imageTypes[String(type.attribute("name"))].load(new URLRequest(String(type.attribute("src"))));
}


Создаю массив, состоящий из элементов класса displayElement:

var displayElements:Array = new Array();
for each (var element:XML in mapXML.element) {
displayElements.push(new displayElement(
imageTypes[String(element.cell.attribute("name"))],
Number(element.cell.attribute("xc")),
Number(element.cell.attribute("yc")),
String(element.cell.attribute("href")),
String(element.cell.label),
String(element.cell.description)));
}
}


Класс:

public class displayElement extends Sprite {
...
private var picture:Loader = new Loader();
public function displayElement(pict:Loader...):void {
this.piture=pict;
...
}
}


Далее позиционирую каждый элемент, состоящий из картинки и текстовой метки.
В результате каждая картинка определенного типа выводится только один раз, а текстовые метки выводятся в каждом элементе.
Почему? Можно ли передавать картинки по ссылке, и позиционировать только копию?

etc
05.06.2007, 16:26
А почему класс имеет имя, как будто это переменная или метод?

з.Ы. «trace всем поможет» © я.
з.Ы.Ы. Понять что-либо в таком мега-коде сложно.

Arsenium
05.06.2007, 16:33
А почему класс имеет имя, как будто это переменная или метод?

А как иначе?

etc
05.06.2007, 16:35
Правильный ответ: DisplayElement.

Arsenium
05.06.2007, 16:35
Фактически я создаю массив элементов класса displayElement.

блин, ну это сейчас не важно :-)

etc
05.06.2007, 17:36
Фактически нужно проверить, создается ли элемент, нормально ли попадает в массив, есть ли вообще массив. trace в руки!

Arsenium
05.06.2007, 17:53
Создаю такой код в конце:

var nn:Loader = new Loader();
nn = imageTypes["h001"];
addChild(nn);

В результате объект c именем h001 перемещается в начало координат (а не копируется!) почему? ведя я создал НОВУЮ переменную nn, скопировал туда значение imageTypes["h001"] и вывел nn на экран.

etc
05.06.2007, 18:43
nn замещен значением h001 из imageTypes. Создали Loader, потом ссылку на него заменяем на ссылку элемента массива. Loader будет удален сразу же GC.

Arsenium
05.06.2007, 20:12
А как скопировать Loader по ссылке, чтобы новый Loader можно было присвоить другому спрайту и вывести в другом месте (не отменяя вывод первого Loader)?

etc
05.06.2007, 20:33
Никак. Loader есть DispayObject. Что мешает создать новый Loader и через него грузить?

Arsenium
05.06.2007, 20:59
мешает то, что я не хочу много раз грузить одину и тот же картинку, чтобы разместить ее на разных позициях по х и у.
Можно использовать bitmapData.clone(), но bitmapData только доступна после окончания загрузки картинки.
А можно ли активировать кэш, чтобы не грузить много раз одну картинку?

etc
05.06.2007, 21:13
Загрузить один раз одну картинку, затем размножить.