Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.11.2006, 22:02
Sapfir вне форума Посмотреть профиль Отправить личное сообщение для Sapfir Найти все сообщения от Sapfir
  № 1  
Ответить с цитированием
Sapfir

Регистрация: Mar 2002
Сообщений: 47
По умолчанию Вопрос про gotoAndPlay()

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

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

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

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

Старый 10.11.2006, 22:06
Dendroid вне форума Посмотреть профиль Отправить личное сообщение для Dendroid Посетить домашнюю страницу Dendroid Найти все сообщения от Dendroid
  № 2  
Ответить с цитированием
Dendroid
 
Аватар для Dendroid

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
gotoAndPlay(1) сработает только после onEnterFrame, и после того, как будет выполнен весь код во всех объектах, связанный с данным кадром.
Посередине выполнения одного кадра кода вообще ничего внешнего не происходит.
__________________
Верить никому нельзя. Мне - можно. :)

Старый 10.11.2006, 22:09
KUZEN вне форума Посмотреть профиль Отправить личное сообщение для KUZEN Посетить домашнюю страницу KUZEN Найти все сообщения от KUZEN
  № 3  
Ответить с цитированием
KUZEN
Ветеран форума
 
Аватар для KUZEN

Регистрация: Jun 2005
Адрес: MOSCOW
Сообщений: 6,852
Отправить сообщение для KUZEN с помощью ICQ Отправить сообщение для KUZEN с помощью Yahoo Отправить сообщение для KUZEN с помощью Skype™
если в начале второго кадра стоит gotoAndPlay(1) а потом весь остальной код, то он вообще не выполнится ...
__________________
BestMasterиZация

Старый 10.11.2006, 22:12
Dendroid вне форума Посмотреть профиль Отправить личное сообщение для Dendroid Посетить домашнюю страницу Dendroid Найти все сообщения от Dendroid
  № 4  
Ответить с цитированием
Dendroid
 
Аватар для Dendroid

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
Цитата:
Сообщение от KUZEN
если в начале второго кадра стоит gotoAndPlay(1) а потом весь остальной код, то он вообще не выполнится ...
Хм... Вроде работает:
Код:
gotoAndStop(2);
trace(1234);
__________________
Верить никому нельзя. Мне - можно. :)

Старый 10.11.2006, 22:21
Sapfir вне форума Посмотреть профиль Отправить личное сообщение для Sapfir Найти все сообщения от Sapfir
  № 5  
Ответить с цитированием
Sapfir

Регистрация: Mar 2002
Сообщений: 47
Цитата:
Сообщение от KUZEN
если в начале второго кадра стоит gotoAndPlay(1) а потом весь остальной код, то он вообще не выполнится ...
KUZEN, интереснее, что будет если поставить gotoAndPlay(1) в середине, в цикле onEnterFrame().

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

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

Старый 10.11.2006, 22:21
Dendroid вне форума Посмотреть профиль Отправить личное сообщение для Dendroid Посетить домашнюю страницу Dendroid Найти все сообщения от Dendroid
  № 6  
Ответить с цитированием
Dendroid
 
Аватар для Dendroid

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
Как я понимаю, gotoAndPlay(1) это что-то вроде "_currentframe=1" т.е. значение просто устанавливается, код выполняется дальше (хотя можно в этом же, втором кадре протестить его, _currentframe будет равно 1), но отображаться будет только в момент перерисовки экрана), а вот уже после перерисовки новый код из первого кадра встанет в очередь на выполнение...
exit куда, из плеера совсем?
__________________
Верить никому нельзя. Мне - можно. :)

Старый 10.11.2006, 22:23
Sapfir вне форума Посмотреть профиль Отправить личное сообщение для Sapfir Найти все сообщения от Sapfir
  № 7  
Ответить с цитированием
Sapfir

Регистрация: Mar 2002
Сообщений: 47
Спасибо, Dendroid, за помощь!

Старый 10.11.2006, 22:27
Sapfir вне форума Посмотреть профиль Отправить личное сообщение для Sapfir Найти все сообщения от Sapfir
  № 8  
Ответить с цитированием
Sapfir

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

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

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

Старый 10.11.2006, 22:34
Dendroid вне форума Посмотреть профиль Отправить личное сообщение для Dendroid Посетить домашнюю страницу Dendroid Найти все сообщения от Dendroid
  № 9  
Ответить с цитированием
Dendroid
 
Аватар для Dendroid

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
Цитата:
Сообщение от Sapfir
KUZEN, интереснее, что будет если поставить gotoAndPlay(1) в середине, в цикле onEnterFrame().
onEnterFrame не может быть циклом - это просто обработчик событий для конвеера флэша, изнутри куска кода им управлять нельзя в принципе, также как нельзя сделать паузу в выполнении одного кода, чтобы в это время что-то другое происходило.


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

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

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


Последний раз редактировалось Dendroid; 10.11.2006 в 22:44.
Старый 10.11.2006, 22:39
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Прервать код можно с помощью return, но вот продолжить...
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:58.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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