Здравия!
Проблема вот в чём - конструктор "LableField()" заканчивает своё выполнение быстрее нежели добавляется слушатель "lableField.addEventListener(LableField.graphDataLoaded, lableFieldLoaded)" на окончание конструктора, в связи с чем "dispatchEvent(new Event(LableField.graphDataLoaded))" срабатывает слишком рано и на этом всё заканчивается, то есть функция "lableFieldLoaded(e: Event)" никогда не сработает.
Я что-то упускаю из виду, но что? Прошу подсказать, если не ответ, то хотя бы путь где поискать, а пока штудирую справочники :(
Код AS3:
package {
import flash.display.Sprite;
import tp.*;
import flash.events.Event;
public class TestProj extends Sprite {
private var graphConteiner: Sprite;
public function TestProj() {
trace ("TestProj Создание основного контейнера отображения");
graphConteiner = new Sprite();
trace ("TestProj Запуск конструктора LableField()");
var lableField = new LableField();
trace ("TestProj Добавление слушателя addEventListener(LableField.graphDataLoaded, lableFieldLoaded)");
lableField.addEventListener(LableField.graphDataLoaded, lableFieldLoaded);
function lableFieldLoaded(e: Event): void {
trace("TestProj Присвоение переменной данных из LableField");
var lableContData = lableField.getContainerLableField();
trace("TestProj Добавление в контейнер непосредственного отображения");
if (graphConteiner.contains(lableContData)==false) graphConteiner.addChild(lableContData);
trace("TestProj Добавление на экран основного контейнера отображения");
addChild(graphConteiner);
}
}
}
}
Код AS3:
package tp {
import flash.events.EventDispatcher;
import flash.events.Event;
import flash.display.Sprite;
import flash.text.TextField;
public class LableField extends EventDispatcher {
public static const graphDataLoaded: String = "graphDataLoaded";
private var labContainer: Sprite; //контейнер для хранения лэйблов
public function LableField() {
labContainer = new Sprite();
var Lable001: TextField = new TextField();
Lable001.x = 10;
Lable001.y = 10;
Lable001.text = "Если это видно на экране, значит всё работает как надо.";
trace ("LableField Добавление данных в группу labContainer");
labContainer.addChild(Lable001);
trace ("LableField Запуск dispatchEvent(new Event(LableField.graphDataLoaded))");
dispatchEvent(new Event(LableField.graphDataLoaded));
}
public function getContainerLableField() {
return (labContainer);
}
}
}