Функция AS3 работает до определения переменных! - PullRequest
2 голосов
/ 16 июня 2010

Я пытаюсь добавить функцию init () в MovieClip, но когда я запускаю функцию из scene1, переменные, которые были установлены в MovieClip, еще не определены ... MovieClip перетащили на сцену из библиотеки.

scene1:

mc.init(null);

MovieClip:

var _default = 5;

function init(num) {
     if(num == null) {
          trace(_default);
     } else {
          trace(num);
     }
}

Трассировка «undefined» вместо «5»;Есть ли способ решить эту проблему?

1 Ответ

1 голос
/ 06 марта 2011

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

Чтобы обойти это, можно позволить флеш-памяти завершить сначала выполнение кода на временной шкале и в MovieClip, а затем вызвать функцию с временной шкалы после ее завершения.

Самый простой способ сделать это - использовать прослушиватель событий:

Временная шкала:

addEventListener( Event.ENTER_FRAME, onEnterFrame );

function onEnterFrame( e:Event ):void {
    myObject.init(null);
    removeEventListener( Event.ENTER_FRAME, onEnterFrame );
}

Таким образом, временная шкала будет ждать, пока первый кадр не начнет вызывать функцию init вашего MovieClip.

...