PDA

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


Vidar
22.03.2007, 18:42
Вопрос такой:
в библиотеке есть клип clip_1 класса class_1 в нем клип clip_2 класса class_2.

после аттача clip_1 вызывается его метод clip_1.init(), который в свою очередь вызывает метод clip_1.init(), но к этому времени class_2 еще не инициализировался и следовательно метода init у него нет.

Пару способов решения проблемы я знаю но хотелось бы услышать независимое мнение, как с этим справиться внеся минимум исправлений.

CorC
22.03.2007, 18:51
получается что после аттача clip_1 вы в него должны аттачить клип 2
а уже потом вызывать инит1 который вызовет инит2 :)

Vidar
22.03.2007, 18:58
этот способ я уже знаю, нужно более универсальный, clip_2 должен лежат в clip_1 изначально

iNils
22.03.2007, 19:11
class class_1 extends MovieClip {
private var clip_2:MovieClip;
function class_1() {
this.onEnterFrame = init;
}

private function init () {
delete this.onEnterFrame;
clip_2.init ();
}
}

etc
22.03.2007, 19:19
Ещё говорят, что можно использовать onLoad. Но я по привычке пользую метод iNils-а или чаще у меня просто не существует вложенных клипов, они потом создаются.

Vidar
22.03.2007, 19:32
да похоже это единственный подходящий вариант, не хотелось к onEnterFrame привязываться но похоже придется. Всем сенькью

etc
22.03.2007, 19:51
Почему же? Попробуй onLoad. Я им никогда не пользовался и не проверял, лень :)

iNils
22.03.2007, 19:57
Почему же? Попробуй onLoad. Я им никогда не пользовался и не проверял, лень :)
Работает. Срабатывает раньше, чем onEnterFrame.

etc
22.03.2007, 20:04
Но позже инициализации внутренних клипов? Если да, то лучше, наверное, использовать его.

iNils
22.03.2007, 20:15
Но позже инициализации внутренних клипов? Если да, то лучше, наверное, использовать его.Позже. Я его не использовал, так как думал, что он ведет себя также глупо как в AS1, то есть срабатывает только для рута.

Vidar
22.03.2007, 22:15
да, с onLoad все как надо работает:)