PDA

Просмотр полной версии : Задержка инициализации.


Ромастый
19.03.2007, 17:30
Уже долгое время раздражает и портит настроение одна вещь.
Не смертельная, но неприятная.
Есть класс
class OuterMC extends MovieClip {
private var inner_mc:InnerMC;
....
}

Экземпляр которого содержит внутри себя наследника другого класса:
class InnerMC extends MovieClip {
....
}

На инициализацию inner_mc порой уходит порядочное время - от секунды и выше. Таким образом, обращаясь в OuterMC к методам или свойствам inner_mc до его инициализации мы получаем фигу.

Выход - сообщить в конструкторе класса InnerMC о том, что инициализация произошла.
Но добавить OuterMC в качестве слушателя inner_mc до инициализации мы не можем, а прямое обращение по ссылке к OuterMC из конструктора InnerMC - "Слышь, эта, я тут короче пришел в себя, со мной можно работать" - это как-то криво... :rolleyes:

Какие есть еще варианты в такой ситуации? :umnik2:

etc
19.03.2007, 17:38
http://groups.google.com/group/ruFlash/browse_thread/thread/8d113120df0a07a5/047dabe80cb21553?lnk=gst&q=onLoad&rnum=2#

Ромастый
19.03.2007, 18:48
Да, спасиб... Читано не раз.
Проблема стара как мир, или вернее - как mx2004.

Раньше я размещал ссылку на содержащий класс, мирясь с кривизной данного подхода. Но чаша терпения переполнена :)))

Вопрос - как кто это обходит?

etc
19.03.2007, 18:56
Там описаны все варианты.
http://groups.google.com/group/ruFlash/browse_thread/thread/8d113120df0a07a5/047dabe80cb21553

Ромастый
20.03.2007, 16:43
Не все. Например вложенный клип можно сделать вещателем из внешнего.

import mx.events.EventDispatcher;
//
class OuterMC extends MovieClip {
private var inner_mc:InnerMC;

function OuterMC() {
EventDispatcher.initialize(inner_mc);
inner_mc.addEventListener("someEvent", this);
}

function someEvent(evt_obj) {
...
}
}
А в конструкторе класса InnerMC вещать "Я очухался"
Такая конструкция вроде работает, но тоже выглядит кривовато.

Еще варианты?

etc
20.03.2007, 16:53
Так, слушай, собери нерабочий пример, мне проще решить проблему на практике, нежели в теории.

Ромастый
20.03.2007, 17:09
Как таковой проблемы нет. Вернее есть, как видим, но она решается кучей способов.
Вопрос был из серии теоретических. Или риторических (в народе еще называемых дурацкими :rolleyes: )

Просто хотел выяснить, какие варианты есть еще, вдруг что-то пропустил, и выбрать оптимальный.

etc
20.03.2007, 17:13
Я обычно откладываю до следующего кадра все.