ActionScript 3.0 TypeError

Я получаю эту досадную ошибку, и я не могу понять, в чем может быть проблема...

TypeError: Error #1009: Cannot access a property or method of a null object reference. at simplifyVirSys_fla::copyRightAthenaAcademy_1/initiateApp()

Моя основная временная шкала имеет два кадра: frame1 — вступление и frame2 — само приложение.

Вступление представляет собой мувиклип. Код на последнем кадре интро MC выглядит так:

addEventListener(Event.ENTER_FRAME, initiateApp);

function initiateApp(e:Event){
    MovieClip(root).gotoAndStop(2);
}

Таким образом, после воспроизведения вступления он должен перейти на второй кадр основной временной шкалы. И тут окно вывода сходит с ума с ошибкой #1009.


person Community    schedule 19.11.2012    source источник
comment
Вы проверили, что проигрыватель загружен и готов к работе перед добавлением прослушивателя событий EnterFrame?   -  person Gone3d    schedule 19.11.2012


Ответы (2)


Попробуй это:

addEventListener(Event.ADDED_TO_STAGE, this.ready);

function ready(e:Event) {
    removeEventListener(Event.ADDED_TO_STAGE, ready);
    addEventListener(Event.ENTER_FRAME, initiateApp);
}

function initiateApp(e:Event){ 
        MovieClip(root).gotoAndStop(2);
}
person Gone3d    schedule 19.11.2012
comment
спасибо за ответы, ребята, но я понял это вчера, читая аналогичную тему - пользователь по имени Vivo ответил на него, и я просто применил его к своей проблеме. Мой код теперь выглядит так (и он работает): stop(); addEventListener(Event.ENTER_FRAME, инициировать приложение); function InitialApp(e:Event){ MovieClip(root).gotoAndStop(2); removeEventListener (Event.ENTER_FRAME, инициировать приложение); } - person ; 20.11.2012
comment
Хотя это работает, это не пуленепробиваемый. Код, который я разместил выше, гарантирует, что плеер загружен, сцена и мувиклипы доступны, а приложение всегда будет работать. Возможно, вы захотите проверить, как работает ваш код, если вы имитируете низкую скорость соединения. Кроме того, если вы когда-нибудь загрузите внешний swf, тот же код будет работать и для него. - person Gone3d; 20.11.2012

Вы можете попробовать проверить корень.

addEventListener(Event.ENTER_FRAME, initiateApp);

function initiateApp(e:Event){
    if (root)
        MovieClip(root).gotoAndStop(2);
}

Я не понимаю, почему вы пытаетесь перейти к кадру 2, используя событие EnterFrame. Вы просто должны поставить stage.gotoAndStop(2) или MovieClip(root).gotoAndStop(2) в последний кадр вашей анимации.

person fenixkim    schedule 19.11.2012
comment
Спасибо за совет. хотя моя проблема уже решена, Ill check out also your solution. And to answer your question - Iam / пытался перейти к кадру 2 с помощью события EnterFrame, потому что я новичок в Actionscript3 или можно сказать нуб AS3... - person ; 20.11.2012
comment
Только что попробовал. У меня не работает stage.gotoAndStop(2), MovieClip(root).gotoAndStop(2) работает нормально. - person ; 20.11.2012