Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Action Script.doc
Скачиваний:
18
Добавлен:
07.02.2015
Размер:
4.39 Mб
Скачать
    1. Особенности программирования кнопок

Если Вы присвоили скрипт кадру, то он исполнится, когда данный кадр начнёт проигрываться. С кнопкой ситуация иная. Скрипт кнопки исполняется в ответ на событие, которое производит зритель ролика (щелчок мыши на кнопке, нажатие определённой клавиши и т. д.). Поэтому при программировании кнопок следует помнить, что любые команды AS, присвоенные кнопке должны лежать внутри «указателя события»

on(событие) {

Команды AS

}

Таких блоков может быть несколько и следовательно одна и та же кнопка может по разному реагировать на различные события. Для создания пустого блока в NormalModeнеобходимо выбрать в списке команд «OnMouseEvent» Отметим, что при программировании кадра или экземпляра «MovieClip» данная команда недоступна. При выборе первой же команды для кнопки вNormalModeдля неё создаётся новый блок, так что формирование пустых блоков редко требуется. Откройте сохранённый ранее ролик «кнопки» и откройте скрипт экземпляра кнопки, запускающей анимацию. Хотелось бы предостеречь Вас от распространённой ошибки. Для того, что бы присвоить скрипт кнопке, необходимо ОДНИМ щелчком подсветить её и далее работать в редакторе скрипта. Некоторые новички делают двойной щелчок, попадая в редактирование кнопки, и пытаются присвоить скрипт кадру «Over» или «Down», надеясь, что он исполнится в момент наведения на кнопку, или щелчка. Это не так. Скрипты, присвоенные кадрам кнопки никогда не исполняются! Но вернёмся к событиям кнопки. Сейчас лучше переключиться вNormalMode. Подсветите команду «on(release)».

В нижней части диалога Вы можете указать на какое именно действие пользователя должна реагировать кнопка. По умолчанию используется событие Release, те мышь вжата на кнопке и отпущена на кнопке. Скрипт, находящийся между фигурными скобками, исполняется в момент отпускания кнопки мыши. Снимите флажок напротив «Release» и установите напротив «Press». Убедитесь, что теперь ролик начнёт проигрываться в момент нажатия пользователем на кнопке левой кнопкой мыши. Устанавливая флажок в соответствующие положения, убедитесь, как срабатывают остальные события.

«ReleaseOutside» Мышь вжата на кнопке и отпущена за её пределами

«RollOver» Мышь не нажимали, она перешла на территорию кнопки

«RollOut» Мыши не нажимали, она вышла за пределы кнопки.

«DragOver» Мышь вжали на кнопке. Вывели за пределы кнопки, а потом не отпуская перевели обратно на кнопку. (Совершенно непонятно, где это можно использовать)

«DragOut» Мышь вжали на кнопке и вывели за пределы кнопки

«KeyPressed» Нажата указанная в диалоге клавиша. Где мышь – не важно.

Кстати, а чем отличаются события «ReleaseOutside» и «DragOut»?

Проверим возможность использования нескольких блоков «On» в одной кнопке. Например, кнопка со скриптом, приведённым ниже будет проигрывать анимацию, лишь, когда на ней вжата левая кнопка мыши.

On (Press){

Play()

}

On (Release){

Stop()

}

Упражнение

Самостоятельно напишите скрипт, который будет проигрывать анимацию, лишь, когда мышь находится на территории кнопки.

    1. Создание Flash-презентации.

Используя лишь командыStopиPlayможно создать массу полезных роликов. Например, презентацию. Пусть в презентации необходимо показать набор слайдов, сопровождающихся анимацией. Сменой слайдов должен управлять пользователь, нажимая на кнопку «далее» или «пробел». Общая схема подобного слайд-шоу довольно проста. Кстати, именно она используется в стандартных уроках «Help» «Lessons». Кнопка «далее» находится в отдельном слое в первом ключевом кадре. В остальные позиции данного слоя вставлены обычные кадры, так что кнопка доступна пользователю в течении всей презентации. На рисунке данный слой назван «ButtonNext». Сами слайды размещаются в слое «Presentation». Самостоятельно создайте на сцене анимацию «MotionTween» или «Shape», используя ключевые кадры в позициях 1, 6, 11, 16, 21. В данном случае Используется анимация типа «MotionTween» для перехода от слайда к слайду. Для того что бы исключить самопроизвольное проигрывание слайдов, ключевым кадрам присвойте команды «Stop()». Добавьте новый слой, создайте в нём экземпляр кнопки и присвойте ему скрипт

On(Release){

Play()

}

Разумеется, в реальной презентации для формирования эффектной анимации потребуется не один слой, но схема остаётся той же – кадры останавливают воспроизведение, а кнопка запускает.

Усложним нашу презентацию, добавив кнопки «в начало», «в конец» и «назад». Для этого познакомимся с новой командой – Goto. Данная команда служит для перехода между кадрами и сценами. (Переходы между сценами осилим позднее). В зависимости от того должно продолжаться воспроизведение после перехода или нет, команда выглядитGotoAndPlay(аргументы) илиGotoAndStop(аргументы). В качестве аргумента может использоваться номер кадра или его метка. Метка представляет собой уникальное имя кадра которое может быть введено на панели «Frame» в поле «Label». Преимущество использования меток состоит в том, что при редактировании ролика, порядковый номер кадра может смениться, в то время как, его метка останется прежней.

Создайте ещё три экземпляра кнопок и поместите на них текстовые надписи «в начало» «В конце» и «назад». Пусть кнопка «в начало» переводит проигрывание в первый кадр по его номеру. Присвойте кнопке скрипт

on(release) {

gotoAndStop(1);

}

Кнопка «в конец» будет переводить в последний кадр по его метке. Подсветите последний кадр и на панели «Frame» присвойте ему метку «end». Если Вы в режимеNormalMode, то в спискеTypeвыберитеFrameLabel, а в спискеFrame– имя метки. Хотя, куда проще, просто ввести имя в кавычках, находясь вExpertMode.

on(release) {

gotoAndStop("end");

}

Что касается кнопки назад, то так как номер кадра назначения не постоянен, его придётся вычислять. Так как слайды отстоят друг от друга на расстоянии в 5 кадров, то номер предыдущего кадра можно получить, вычтя 5 из номера текущего. Номер текущего кадра возвращает внутренняя переменная _currentframe. Таким образом скрипт кнопки должен выглядеть так

on(release) {

gotoandplay(_currentframe-5);

}

Для формирования скрипта в NormalModeв спискеTypeвыберитеExpression.