Используем возможности команд для кадров языком Action Script. Останавливаем (stop () ), переходим на другой кадр (play () ) и многое другое.
В программе Adobe Flash имеется такая возможность, как задавать команды для кадра, то есть набор условий, который будет выполняться при проигрывании данного кадра. Чтобы добавить такое условия в кадр, нужно выбрать данный кадр (должен подсветиться нашим красным маркером) и в меню "Actions - Frame" вписать нужные нам команды. Если у вас нету данного меню на экране, то идем в главное меню- далее Windows - Actions (или клавиша F9). В итоге должно появиться окно с возможностью вписать в нее некий код, который и будет ялвяться кодом языка Action Script. Вот примерно, как это выглядит:
Как видите я уже успел вписать туда команду stop();
Как и в php, окончание каждой команды заканчивается точкой с запятой, дабы внести ясность окончания данной команды для обработчика. Теперь пройдемся по часто используемым командам во фреймах:
- stop () - команда остановки кадра. Представим, что мы сделали картину, состоящую из 3 кадров:
- play() - команда запуска проигрывания кадра. Если по каким-то причинам сценарий проигрывания нашей анимации был остановлен, то есть на данном кадре мы остановились (а причиной тому может быть, например, команда gotoAndStop( ), о которой я расскажу далее), то команда play() восстановит проигрывание кадра текущего и до следующего кадра, где уже будет выполняться сценарий следующего кадра соответственно. Совершенная противоположность для функции stop(). Эта команда будет использоваться нами при обработке кнопок в дальнейшем (я также расскажу).
- gotoAndStop( ) - команда переходит к фрейму, который указывается в круглых скобках, и останавливается на данном кадре. Например, если мы напишем в кадре под номером 2 такую команду внутри фрейма и укажем переход к третьему кадру, где мы и должны будем остановиться, то выглядеть это будет так: gotoAndStop(3); - в скобках мы указали кадр, на который мы перейдем и остановися на нем. В случае с нашей анимацией, состоящей из 3 кадров картина будет следующая: после проигрывания первого кадра, пойдет сразу второй кадр, но мы не увидим его графики, потому что сначала исполняется код Action Script, в котором мы указали, что мы будем переходить сразу к третьему кадру и останавливаться, то есть второй кадр вообще проигрываться визуально не будет, но программно код его фрейма перебросит нас на третий кадр, где мы и остановимся. В итоге флешка зависнет на 3 кадре и он замрет, как статическая картинка.
Теперь представим, что в нашем 3 кадре мы прописали команду play(), а во 2 кадре мы оставили, как и прежде, команду gotoAndStop(3). Что видит обработчик наших команд: он проигрывает первый кадр, так как в нем не имеется никаких команд для выполнения, и переходит ко второму кадру, в котором он считывает информацию. В этом кадре говорится: переходи на 3 кадр и останавливайся там. В итоге пейзаж второго кадра мы не увидили, и переходим к считываю команд 3 кадра. Мы уходя со второго кадра на третий получили команду остановиться на третьем, но обработчик проверяет команды третьего кадра и видит: ага, здесь есть команда play(), значит запрос от второго кадра 'остановиться на третьем кадре'уже не уместен, так как теперь выполнение и приоритет имеет уже 3 кадр. В итоге обработчик отыгрывает визуально 3 кадр, и переходит на следующий. Но так как у нас всего только 3 кадра и следующего мы не имеем, то обработчик переходит на исполнение в начало, то есть на первый кадр, тем самым завершая первый цикл и начиная уже второй таким же образом. Вот что мы будем иметь:
- gotoAndPlay( ) - как вы уже догадались: команда переходит к фрейму, указанному в скобки и проигрывает его. Если, как в случае с gotoAndStop( ), поменять у второго фрейма команду на gotoAndPlay(3), а у третьего фрейма поставить вместо play() - stop(), то ситуация будет такова: второй фрейм опять проигрываться визуально не будет, но захочет перейти к 3 фрейму и проиграть его. Но, так как 3 фрейм имеет внутри себя команду stop(), то команда второго фрейма gotoAndPlay(3) уже будет не уместна, и проигрывание остановиться на 3 кадре и замрет в виде статической картинки.
- nextFrame( ) - говорит обработчику, что нужно перейти на следующий за данным фрейм. Честно говоря, я так и не понял, чем он отличается от функциональности от play(), ведь и тот и другой требует перехода к следующему кадру, не исполняя визуально данный кадр. Но, одно но - после такого перехода на следующий фрейм цикл перестает действовать и картинка замирает на следующем кадре. Значит данная функция более похожа на gotoAndStop() нежели play(). Можете сами в принципе поэкспериментировать с данной командой.
- prevFrame( ) - переходит на предыдущий фрейм и останавливается на нем. Опять же цикл сбивает и останавливается. Противоположность команде nextFrame().
Комментариев нет:
Отправить комментарий