Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Использование ссылок (http://www.flasher.ru/forum/showthread.php?t=96708)

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
А почему класс имеет имя, как будто это переменная или метод?

А как иначе?

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 и через него грузить?


Часовой пояс GMT +4, время: 10:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.