|
|
|||||
Регистрация: Jun 2010
Сообщений: 120
|
событие ENTER_FRAME
Доброго времени суток.
Никак не могу понять, как работает событие Event.ENTER_FRAME. Читал мануал, но это не помогло в решении проблемы. Вот код: private function playButtonClickHandler(event:MouseEvent):void { playButton.removeEventListener(MouseEvent.CLICK, playButtonClickHandler); gotoAndStop("Intro"); addEventListener(Event.ENTER_FRAME, everyFrame, false, 0, true); } private function everyFrame(event:Event):void { removeEventListener(Event.ENTER_FRAME, everyFrame); if (storm.currentFrame == storm.totalFrames) { storm.stop(); gotoAndStop("Game"); } } at Preloader/everyFrame()" Последний раз редактировалось goldlider; 04.04.2011 в 22:06. |
|
|||||
Регистрация: Nov 2008
Сообщений: 528
|
Просто внимательно прочтите ваш код. У вас ошибка в логике. Первое, что делает everyFrame - это удаляет слушатель с ENTER_FRAME независимо от того, находитесь вы на последнем кадре или нет.
|
|
|||||
Регистрация: Jun 2010
Сообщений: 120
|
Stargazer, ну вот убрал я это removeEventListener(Event.ENTER_FRAME, everyFrame), но то сообщение осталось.
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Сделайте в начале everyFrame:
Если там null, значит мувиклипа с указанным именем нет на сцене в текущем кадре. 30000 |
|
|||||
Регистрация: Jun 2010
Сообщений: 120
|
etc, поставил перед everyFrame trace(storm), в output вывелось 66 раз [object MovieClip], т.е. внутри мувиклипа действительно 66 кадров. А вот после того, как мувик проигрался при переходе из внутреннего таймлайна мувиклипа в главный выходит тоже самое сообщение.
dimarik, мувиклип у меня нах-ся во 2-ом кадре. В 3-ем кадре его нету, как я и задумал. А вообще мне не понятно, когда я пишу просто stage слушает данное событие так ведь ? А когда мувиклип слушает ? Так почему, если я пишу просто addEventListener у меня мувиклип запускается, хотя кадры находятся у него внутри. И разницы между этими записями не происходят. Хоть я напишу первый вариант, у меня переход в кадр с мувиклипом осуществляется, хоть я напишу второй вариант, происходит тоже самое. Последний раз редактировалось goldlider; 05.04.2011 в 09:25. |
|
|||||
Регистрация: Mar 2011
Сообщений: 38
|
Создай объект-пустышку к нему и примени слушатель (obj.addEventListener...), либо применяй его к объекту storm (storm.addEventListener...) и удаляй в 66-м кадре (storm.removeEventListener...).
Последний раз редактировалось MAPUTO; 05.04.2011 в 09:38. |
|
|||||
Регистрация: Jun 2010
Сообщений: 120
|
MAPUTO, у меня в кадрах ничего не написано, все написано в отдельном as-файле, который связан с Flash IDE. Вас не поймешь, одни говорят убрать removeEventListener в ф-ии everyFrame, другие говорят поставить.
В обоих случаях ошибка возникает. |
|
|||||
Регистрация: Mar 2011
Сообщений: 38
|
removeEventListener надо ставить не в самой функции а так чтобы она срабатывала после проверки события достижения последнего кадра мувика.
|
|
|||||
Регистрация: Nov 2008
Сообщений: 528
|
Вот, MAPUTO написал то, что я думал, что вы и сами поймёте. Ошибка, видимо, возникает тогда, когда вы переходите на 3-й кадр не убирая слушателя. На 3-м кадре у вас, видимо, storm-а нет (что логично, зачем держать интро на кадре, где должна быть "Game"), поэтому выражения storm.currentFrame и storm.totalFrame приводят к ошибке (неоткуда получать эти свойства, пусто).
Добавлено через 8 минут Цитата:
Последний раз редактировалось Stargazer; 05.04.2011 в 13:11. |
Часовой пояс GMT +4, время: 13:47. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|