![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2003
Сообщений: 41
|
Привеь. У меня есть три именованных фрейма:
# Фрейм start var nRand = random(20) + 10; gotoAndPlay('repeate'); # Фрейм repeate trace(nRand); if (nRand == 0){ gotoAndStop('finish'); } else { nRand--; gotoAndPlay('repeate'); } # Фрейм finish stop; По идее должно быть так: в первом фрейме получаем число. идем на второй фрейм. там число уменьшаем до нуля, с каждым разом фрейм переходит сам на себя, и потом переходим на третий. Но у меня получается так, что при выполнении функции gotoAndPlay('repeate'); происходит переход на третий фрейм finish, там игнорируется функция stop; и происходит переход на первый фрейм. Почему??????? Ведь все правильно. Сначала у меня небыли именованные фреймы, но что бы быть уверенным я дал им имена и изменил код. Но все равно не работает. спасибо. |
|
|||||
|
Регистрация: Jan 2003
Сообщений: 41
|
я приаттачил исходник.
|
|
|||||
|
[+1.3 05.04.09]
|
можед быть так
__________________
Бойтесь китайцев, компы приносящих! |
|
|||||
|
Регистрация: Jan 2003
Сообщений: 41
|
Дык в файле ни каких изменений, все так же, как и было. я чего то непонимаю?
Ага. там появился еще один фрейм на слое Rect. только зачем? и как это влияет на выполнение срипта. Я снова попробовал запустить дебаг и после выполнения функции gotoAndPlay('repeate') скрипт переходит на слой финиш, а не на слой репиат. Я хочу, что бы квадратик пропадал со временем. Этого не добиться если там есть символ на последнем фрейме. Последний раз редактировалось IUnknown; 08.11.2003 в 17:06. |
|
|||||
|
Регистрация: Jul 2003
Адрес: SPb
Сообщений: 125
|
goto... на самого себя не выполняется в принципе. Т.е. если goto... на тот же фрейм, где головка плеера уже находится, то команда игнорируется.
|
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Фрейм не может переходить сам на себя. У тебя получается так: плэйер считывает с первого фрейма значение nRand и переходит на второй фрейм. Во втором фрейме он трэйсит значение nRand и, если оно не равно 0 (а это значение не может быть равно 0 по определению), уменьшает значение nRand на единицу и выполняет директиву gotoAndPlay(“repeate”). Это значит, что плэйер не задерживается на этом фрейме, а ИГРАЕТ дальше. Фактически, он переходит на третий фрейм, не считывая кода (“stop”) на нем. Но чисто визуально мы можем определить такой переход. С третьего фрейма опять происходит переход на первый фрейм. Считывается новое значение nRand и все повторяется бесконечно.
Чтобы все получилось, как ты хочешь, тебе надо сделать еще один дополнительный фрейм. Смотри аттачмент. А вообще-то, надо учиться делать все без фремов. Циклы ведь можно писать и в одном фрейме, применяя movieClip.onEnterFrame. Как это делать, показано во втором примере.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
Регистрация: Jan 2003
Сообщений: 41
|
я до этого уже дошел 15 мин назад. Решил это тем, что сделал еше один пустой фрейм между первым и вторым. и теперь при декременте числа иду на второй фрейм, а он потом переходит на третий, где вся операция повторяется снова. Разве в флешь 5 такая фича была? Кажется нет, иначе как же работают все эти прелоадеры? В общем работает, всем спасибо.
|
![]() |
Часовой пояс GMT +4, время: 11:01. |
|
|
« Предыдущая тема | Следующая тема » |
|
|