Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Вопрос про gotoAndPlay() (http://www.flasher.ru/forum/showthread.php?t=87762)

Sapfir 10.11.2006 22:02

Вопрос про gotoAndPlay()
 
Интересует то, как будет работать ниже приведенная схема.

Допустим есть два кадра, в каждом из которых содержится много кода на ActionScript. Пусть клип дошел до второго кадра и в некоторый момент вызвал gotoAndPlay(1). Обрывется ли при этом выполнение кода из второго кадра? Если "нет", то когда начинает выполнятся код первого кадра? Нужно ли в подобной ситуации использовать exit; для прерывания работы кода?

Расскажите, кто знает...

P.S. И будет ли отличие, если вызвать gotoAndPlay(1), например, в цикле onEnterFrame().

Dendroid 10.11.2006 22:06

gotoAndPlay(1) сработает только после onEnterFrame, и после того, как будет выполнен весь код во всех объектах, связанный с данным кадром.
Посередине выполнения одного кадра кода вообще ничего внешнего не происходит.

KUZEN 10.11.2006 22:09

если в начале второго кадра стоит gotoAndPlay(1) а потом весь остальной код, то он вообще не выполнится ...

Dendroid 10.11.2006 22:12

Цитата:

Сообщение от KUZEN
если в начале второго кадра стоит gotoAndPlay(1) а потом весь остальной код, то он вообще не выполнится ...

Хм... Вроде работает:
Код:

gotoAndStop(2);
trace(1234);


Sapfir 10.11.2006 22:21

Цитата:

Сообщение от KUZEN
если в начале второго кадра стоит gotoAndPlay(1) а потом весь остальной код, то он вообще не выполнится ...

KUZEN, интереснее, что будет если поставить gotoAndPlay(1) в середине, в цикле onEnterFrame().

Dendroid, из Ваших слов я понял так: gotoAndPlay(1) не выполнится до тех пор пока весь оставшийся код в onEnterFrame не отработает. Я правильно понял? :victory:

А если сразу поставить за gotoAndPlay(1) комманду exit? Надо будет мне все это в ближайшее время самому проверить, жаль Flash`a под рукой нет.

Dendroid 10.11.2006 22:21

Как я понимаю, gotoAndPlay(1) это что-то вроде "_currentframe=1" т.е. значение просто устанавливается, код выполняется дальше (хотя можно в этом же, втором кадре протестить его, _currentframe будет равно 1), но отображаться будет только в момент перерисовки экрана), а вот уже после перерисовки новый код из первого кадра встанет в очередь на выполнение...
exit куда, из плеера совсем? ;)

Sapfir 10.11.2006 22:23

Спасибо, Dendroid, за помощь!

Sapfir 10.11.2006 22:27

Цитата:

Сообщение от Dendroid
Как я понимаю, gotoAndPlay(1) это что-то вроде "_currentframe=1" т.е. значение просто устанавливается, код выполняется дальше (хотя можно в этом же, втором кадре протестить его, _currentframe будет равно 1), но отображаться будет только в момент перерисовки экрана), а вот уже после перерисовки новый код из первого кадра встанет в очередь на выполнение...
exit куда, из плеера совсем? ;)

Нет... exit - досрочное завершение выполнения скрипта. Правда, тут тоже мне не совсем ясно. Завершается выполнение кода только из текущего кадра?

А если, как Вы и сказали, gotoAndPlay(1) это есть присвоение переменной (что то типа указателя на текущий кадр), то может комманда exit возьмет эту переменную и остановит код первого кадра...

Но спасибо за разъяснения про gotoAndPlay.

Dendroid 10.11.2006 22:34

Цитата:

Сообщение от Sapfir
KUZEN, интереснее, что будет если поставить gotoAndPlay(1) в середине, в цикле onEnterFrame().

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


Почему так происходит: дойдя до очередного куска кода (на фрейме, в кадре, по событию) флэш полностью отдаёт управление виртуальной машине (интерпретатору Actionscript), пока этот кусок кода не выполнился до конца - флэш ничего не делает, так как у него совсем нет процессорного времени (распараллеливания не предусмотрено). По окончании выполнения виртуальная машина опять отдаёт управление флэшу, и он уже смотрит, чего там скрипт наделал, чего поменял.

Т.е. один кусок кода - вещь неделимая с точки зрения флэша.

Ну а если exit - просто отдал управление флэшу сразу, сообщил ему, что все инструкции кончились... Да и нету во флэше никакого exit кроме return ;)...

iNils 10.11.2006 22:39

Прервать код можно с помощью return, но вот продолжить...


Часовой пояс GMT +4, время: 09:49.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.