удаление мувиклипа после выполнения

хорошо, у меня есть этот код на кадре 1

 addEventListener(Event.ENTER_FRAME, changeframe);

 function changeframe(event:Event):void
 {
 btsakhir.y -=  6;

 if (btsakhir.y <= 56)
 {
     nextFrame();
 }
 }

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


person Hendra Wijaya    schedule 01.05.2013    source источник


Ответы (1)


Происходит следующее: когда flash переходит к следующему кадру, обработчик событий Event.ENTER_FRAME все еще работает. И ожидает, что есть объект под названием «бцахир» со свойством y. Вы можете проверить это, добавив трассировку в свой метод changeFrame(), и вы должны увидеть, что она все еще трассируется, даже если она находится в следующем кадре.

Две вещи, которые вы могли бы сделать:

1.) измените свой обработчик событий (ваш метод changeframe()), чтобы он проверял и учитывал, когда «btsakhir» больше не существует в следующем кадре. Это может стать немного грязным и не рекомендуется в зависимости от того, как вы решите это сделать.

Or

2.) удалите прослушиватель событий, чтобы он вообще не запускался, когда вы переходите к следующему кадру. Если все, что делает метод changeframe(), это проверяет свойство y "btsakhir", то это, вероятно, лучший способ. Чтобы удалить прослушиватель событий, вы можете добавить:

this.removeEventListener(Event.ENTER_FRAME, changeframe);

Вы бы добавили его непосредственно перед вызовом nextFrame();


Конечно, если ваш объект «бцахир» должен существовать в следующем кадре (и является объектом на временной шкале/сцене), просто добавьте к нему кадры.

person mitim    schedule 01.05.2013
comment
это сработало, но removeEventListener должен быть размещен сразу после следующего кадра, кстати, спасибо - person Hendra Wijaya; 01.05.2013