![]() |
Вопрос про gotoAndPlay()
Интересует то, как будет работать ниже приведенная схема.
Допустим есть два кадра, в каждом из которых содержится много кода на ActionScript. Пусть клип дошел до второго кадра и в некоторый момент вызвал gotoAndPlay(1). Обрывется ли при этом выполнение кода из второго кадра? Если "нет", то когда начинает выполнятся код первого кадра? Нужно ли в подобной ситуации использовать exit; для прерывания работы кода? Расскажите, кто знает... P.S. И будет ли отличие, если вызвать gotoAndPlay(1), например, в цикле onEnterFrame(). |
gotoAndPlay(1) сработает только после onEnterFrame, и после того, как будет выполнен весь код во всех объектах, связанный с данным кадром.
Посередине выполнения одного кадра кода вообще ничего внешнего не происходит. |
если в начале второго кадра стоит gotoAndPlay(1) а потом весь остальной код, то он вообще не выполнится ...
|
Цитата:
Код:
gotoAndStop(2); |
Цитата:
Dendroid, из Ваших слов я понял так: gotoAndPlay(1) не выполнится до тех пор пока весь оставшийся код в onEnterFrame не отработает. Я правильно понял? :victory: А если сразу поставить за gotoAndPlay(1) комманду exit? Надо будет мне все это в ближайшее время самому проверить, жаль Flash`a под рукой нет. |
Как я понимаю, gotoAndPlay(1) это что-то вроде "_currentframe=1" т.е. значение просто устанавливается, код выполняется дальше (хотя можно в этом же, втором кадре протестить его, _currentframe будет равно 1), но отображаться будет только в момент перерисовки экрана), а вот уже после перерисовки новый код из первого кадра встанет в очередь на выполнение...
exit куда, из плеера совсем? ;) |
Спасибо, Dendroid, за помощь!
|
Цитата:
А если, как Вы и сказали, gotoAndPlay(1) это есть присвоение переменной (что то типа указателя на текущий кадр), то может комманда exit возьмет эту переменную и остановит код первого кадра... Но спасибо за разъяснения про gotoAndPlay. |
Цитата:
Почему так происходит: дойдя до очередного куска кода (на фрейме, в кадре, по событию) флэш полностью отдаёт управление виртуальной машине (интерпретатору Actionscript), пока этот кусок кода не выполнился до конца - флэш ничего не делает, так как у него совсем нет процессорного времени (распараллеливания не предусмотрено). По окончании выполнения виртуальная машина опять отдаёт управление флэшу, и он уже смотрит, чего там скрипт наделал, чего поменял. Т.е. один кусок кода - вещь неделимая с точки зрения флэша. Ну а если exit - просто отдал управление флэшу сразу, сообщил ему, что все инструкции кончились... Да и нету во флэше никакого exit кроме return ;)... |
Прервать код можно с помощью return, но вот продолжить...
|
| Часовой пояс GMT +4, время: 09:49. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.