Macromedia Director MX - практическое применение



Macromedia Director MX - практическое применение

  35790931     

Знакомство с обработчиками событий



Перед погружением в Lingo, давайте кратко взглянем на события, вызывающие реакции на них. Событие - это действие, происходящее во время воспроизведения фильма. Ниже приведен пример простого скрипта Lingo, запускаемого событием.

Event: User clicks the mouse (mouseDown)
 Handler: on mouseDown
Lingo Script: Put «You just clicked the mouse!»
Lingo Script: Alert «Click OK to continue»
End Handler: end mouseDown
(Событие: пользователь щелкнул мышью(mouseDown)
Обработчик: по щелчку мыши
Скрипт Lingo: Вывод: «Вы только что щелкнули мышью!»
Скрипт Lingo: Предупреждение: «Щелкните по ОК, чтобы продолжить»
Конец обработки: Конец обработки события mouseDown.

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

mouseDown. Затем Director ищет обработчик on mouseDown. Когда Director прочитает обработчик on mouseDown, то он исполняет скрипт, содержащийся в этом обработчике. В данном обработчике имеются две команды скрипта: Put и Alert (Вывод и Предупреждение). Команда Put читает следующий за ней скрипт и помещает текст «You just clicked the mouse!» в окно Message. После того, как Director исполнит первую строку, он продолжает читать все следующие строки, исполняя их одну за другой. Следующей строкой скрипта в данном случае является Alert «Click OK to continue». Director вызывает системный звуковой сигнал и отображает диалоговое окно предупреждения. Последняя строка end mouseDown сообщает Directory о том, что обработка события закончена.

Экскурсия 10А: Скрипты спрайтов



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

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

Скрипты спрайтов могут быть подключены ко всему спрайту или к одному или нескольким кадрам спрайта. К одному спрайту можно подключать несколько скриптов спрайтов. Скрипт спрайта используется, если вы:

 Хотите воздействовать на отдельный спрайт и заставить его реагировать на определенное действие или событие.  Делаете спрайт интерактивным.  Выполняете какое-либо действие в начале или конце спрайта.


Ниже приведенные шаги помогут вам познакомиться с процессом создания нового скрипта для спрайта с помощью простой реакции на событие.

1. Создайте новый фильм Director'a, выбрав File | New | Movie.

2. В палитре Tools выберите инструмент Filled Rectangle.

3. Создайте на сцене прямоугольную фигуру. (Вы должны вначале создать спрайт в партитуре, перед тем как можно будет добавлять к нему скрипт спрайта.)

4. Для создания нового скрипта спрайта выберите спрайт прямоугольника в партитуре (одним щелчком по спрайту в партитуре).

5. Если Behavior Inspector (Инспектор Реакций На События) не открыт (в правой части экрана), то откройте его, выбрав Window | Behavior Inspector.

6. В панели Behavior Inspector, показанной на рис. 10.1, щелкните по кнопке «плюс» (+) в левом верхнем углу инспектора, а затем выберите New Behavior (Создать Реакцию) во всплывающем окне.



Рис. 10.1. Behavior Inspector


7. В открывшееся диалоговое окно Name Behavior (Имя Реакции) введите имя реакции на событие, напечатав myBehavior в поле Behavior. Щелкните по кнопке ОК, чтобы закрыть окно.

8. Войдите в окно Script, щелкнув по кнопке Script Window на панели Behavior Inspector, как показано на рис. 10.2.



Рис. 10.2. Кнопка Script Window на панели Behavior Inspector


9. Напечатайте следующий скрипт в открывшемся окне.

on mousedown
Alert «Click OK to continue»
 end mousedown

10.Щелкните по кнопке Recompile All Modified Scripts (Перекомпилировать Все Измененные Скрипты), показанной на рис. 10.3 (вам, может быть, придется расширить окно Script, чтобы ее увидеть). Щелкните по X в правом верхнем углу окна, чтобы закрыть его.



Рис. 10.3. Кнопка Recompile All Modified Scripts


11. Когда скрипт спрайта добавляется с помощью создания реакции на событие, то он становится элементом труппы. Этот элемент труппы реакции на событие затем может использоваться другими спрайтами. Каждая новая реакция на событие будет также доступна для выбора во всплывающем окне скриптов на панели инструментов Sprite (в партитуре - прим. перев.).

12. Щелкните по партитуре. Выберите View | Sprite Toolbar. Ознакомьтесь с окном Score. Вы увидите, что при таком вхождении в меню вверху окна Score добавилась информация. Щелкните по ниспадающему меню Behaviors и просмотрите все опции. Вы увидите только что созданную вами реакцию на событие myBehavior. См. рис. 10.4. Выберите ее.

Подсказка

Если только что созданная вами реакция на событие не выбрана для спрайта прямоугольника, то выберите myBehavior из ниспадающего меню.


13. Убедитесь в том, что на Control Panel установлен режим воспроизведения Loop. Щелкните по кнопке Play на Control Panel. Когда вы щелкнете по прямоугольнику мышью, то будет вызван обработчик события on mouseDown. Реакция на событие содержит скрипт Alert, который будет исполняться при щелчке мыши. Щелкните по прямоугольнику, чтобы исполнить ваш новый скрипт. Фильм Director'а будет показывать окно предупреждения каждый раз, когда вы щелкаете по прямоугольнику!



Рис.10.4. Ниспадающее меню Behaviors на панели инструментов Sprite


14. Давайте уберем реакцию на событие из спрайта прямоугольника. Для удаления реакции из спрайта выберите спрайт и щелкните по кнопке «минус» (-) на вкладке Behavior. Выберите Remove Behavior (Удалить Реакцию На Событие), как показано на рис. 10.5.



Рис. 10.5. Кнопка «минус» для удаления реакции на событие


Экскурсия 10В: Скрипты трупп



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

1. Используйте фильм, открытый в Экскурсии 10А. Как вы помните, мы удалили скрипт, но myBehavior все еще остается в окне Cast как элемент труппы.

2. Если вы этот файл не открывали, то выберите File | New | Movie и создайте на сцене прямоугольник с помощью инструмента Filled Rectangle из палитры Tools.

3. Если окно Cast не открыто, то откройте его, выбрав Window | Cast.

4. Выберите первый элемент труппы (прямоугольник) в окне Cast.

5. Щелкните по кнопке Script в окне Cast, как показано на рис. 10.6. В панели Behavior Inspector щелкните по кнопке «плюс» (+) и выберите New Behavior. В диалоговом окне Name Behavior введите имя реакции на событие.



Рис. 10.6. Кнопка Script в окне Cast


6. Director начнет писать ваш скрипт, добавив команду-обработчик on mouseUp и закончив код программы словом end. Вы должны будете поместить команды между первой написанной строкой и последней строкой. Весь скрипт будет исполняться при щелчке мыши (и отпускании ее кнопки) по любому спрайту, содержащему это элемент труппы.

Подсказка

Нет необходимости заканчивать обработку события указанием операции обработчика в конце (end mouseUp). Тем не менее, это помогает увидеть, где заканчивается данный обработчик. Необходимость в этом становится очевидной, когда в скрипте содержится несколько операций обработки.


7. Введите вторую строку скрипта так, чтобы по окончании написания скрипт выглядел следующим образом.

on mouseUp
Alert «Click OK to continue»
end

8. Щелкните по кнопке Recompile All Modified Scripts. Щелкните по X, чтобы закрыть окно.

9. Щелкните по кнопке Play внизу сцены. Щелкните по прямоугольнику, чтобы исполнить новый скрипт. Фильм Director'а будет издавать звуковой сигнал и будет открывать диалоговое окно предупреждения каждый раз, когда вы щелкнете по прямоугольнику.

10. Для удаления скрипта труппы, откройте скрипт труппы, как указывалось ранее. Выделите весь текст в окне Cast Script и нажмите клавишу Delete. Закройте окно.


Экскурсия 10С: Скрипты кадров



Скрипты кадров подключаются к кадру в канале Script партитуры. Эти скрипты являются элементами труппы и могут использоваться в любом кадре. Используйте скрипт кадра, когда вы хотите:

 Управлять головкой воспроизведения. Например, вы хотите перевести головку в паузу или переместить в определенный кадр.  Сделать что-либо на сцене интерактивным (включая и пустые области), когда головка находится в одном из кадров.


Эта экскурсия поможет вам ознакомиться с процессом создания нового скрипта кадра.

1. Используйте рабочий файл из Экскурсии 10В. Если вы не создавали этот файл, то выберите File | New | Movie и нарисуйте закрашенный прямоугольник.

2. Для создания нового скрипта кадра в партитуре вам нужно выбрать кадр в канале Script (расположенном выше номеров кадров и головки). Дважды щелкните по кадру 5 (это произвольный выбор) в канале Script в партитуре, как показано на рис. 10.7. Откроется окно Script.



Рис. 10.7. В канале Script выбран кадр 5


3. Вы видите, что часть программного кода уже написана по умолчанию. Введите код, чтобы текст программы выглядел следующим образом.

on exitFrame me
go frame(2)
end

4. Щелкните по кнопке Recompile All Modified Scripts. Закройте окно Script.

5. Щелкните по кнопке Play внизу сцены. Посмотрите на партитуру. Обратите внимание на то, что каждый раз, когда головка входит в кадр 5, она направляется в кадр 2.

6. Давайте удалим этот скрипт кадра. Выделите скрипт кадра (спрайт в канале Script партитуры) и нажмите клавишу Delete.


Экскурсия 10D: Скрипты фильмов



Скрипты фильма «глобально» доступны в пределах всего фильма. Доступ к ним осуществляется при наступлении некоторых событий. Например, у вас есть скрипт фильма on mouseDown. Этот скрипт будет вызываться каждый раз, когда производится щелчок мыши, независимо от того, в каком месте партитуры произошло это действие. Скрипт фильма служит библиотекой всех скриптов, доступных на протяжении всего фильма.

Скрипт фильма часто используется для хранения индивидуально созданных обработчиков реакций, которые могут быть вызваны другими скриптами спрай-тов, труппы или кадров. Скрипты фильма также используются для инициализации фильма с помощью скрипта Prepare Movie (Подготовка Фильма) или On StartMovie (В Начале Фильма).

Файл Director'a может содержать несколько скриптов фильма. Вы можете использовать множество скриптов фильма для облегчения деления глобальных скриптов на категории. Например, вы можете поместить все индивидуальные или глобальные скрипты в один скрипт фильма, а второй скрипт фильма использовать для всех подстроек для начала фильма.

Использование скриптов фильмов изучается в последующих главах. А теперь важно только то, что вы узнаете, где их найти и как они запускаются. Используйте скрипты фильмов, когда вы хотите:

 Создать индивидуальный обработчик события или подпрограмму и сделать их доступными в пределах всего фильма (например, команды по управлению звуком).  Выполнять действие в любом месте фильма. Например, должно показываться диалоговое окно предупреждения при щелчке мышью в любое время и в любом месте на сцене или в фильме.


Эта экскурсия поможет вам ознакомиться с процессом создания нового скрипта фильма.

1. Выберите Window | Script. Щелкните по информационной кнопке в окне Script, как показано на рис. 10.8.



Рис. 10.8. Информационная кнопка в окне Script


2. Теперь откроется Property Inspector (справа на экране) с вкладкой Script наверху.

3. Во вкладке Script откройте ниспадающее меню Туре (показанное на рис. 10.9) и выберите опцию Movie, если она уже не выбрана.



Рис. 10.9. Вкладка Script и опции ниспадающего меню Туре


Вы только что сделали скрипт скриптом фильма. Вы можете теперь создать индивидуальный обработчик событий, который можно вызывать из любого места вашего фильма Director'a.

4. Напечатайте в окне Movie Script следующий скрипт.

On myCustomHandler
Put «Hello World»
End

5. Щелкните по кнопке Recompile All Modified Scripts и затем закройте окно Script.

6. Откройте окно Message, выбрав Window | Message.

7. Замените текст, имеющийся по умолчанию, напечатав myCustomHandler, а затем нажмите клавишу Enter.

8. Вы увидите, что сообщение «Hello World» переместилось в нижнее окно Message, в соответствии с написанным вами скриптом в шаге 4.

Этот индивидуальный обработчик события может быть вызван из другого обработчика событий скрипта, например, on MouseDown. Мы используем окно Message для тестирования исполнения индивидуальных обработчиков событий, перед тем как использовать их в рабочем фильме Director'а. Напечатав имя обработчика в окне Message, Director выполнил обработчик точно так же, как если бы обработчик был вызван из другого действия.


Подробнее об обработчиках событий



Событие - это действие, происходящее во время воспроизведения фильма. Каждый раз, когда происходит событие, Director посылает запрос на исполнение соответствующего обработчика события. Когда скрипт спрайта, труппы, кадра или фильма получает это сообщение, то запускаются на исполнение операторы обработчика событий.

Обработчики событий являются командами языка Lingo, из которых составляются процедуры или группы процедур. Перед обработчиком события ставится слово on и имя сообщения или события, на которое должен отреагировать обработчик (например, on mouseUp). Обработчики событий также называются процедурами или подпрограммами. Ниже перечислены правила присвоения имени обработчику события.

 Оно должно быть алфавитно-цифровым.  Оно должно начинаться с буквы.  Оно должно быть одним словом.


Ниже приведен пример обработчика события.

on Event
Lingo statements //Операторы Lingo
end

А вот еще один пример обработчика событий.
on mouseUp
Alert «Click OK to continue»
end

Если обработчик одного и того же события подключен к спрайту, элементу труппы, кадру и/или фильму, то будет исполняться только один из этих обработчиков. Иерархия (очередность приоритетов) исполнения Director'ом обработчиков событий следующая.

1. Спрайт.

2. Элемент труппы.

3. Кадр.

4. Фильм.

Обработчики событий



Имеются два типа обработчиков событий: системные предопределенные обработчики и обработчики событий, определяемые пользователем. Системные предопределенные обработчики

Системные предопределенные обработчики являются стандартными программами Lingo для обработки событий, встроенными в Director (например, mouseUp или exitFrame). To есть эти обработчики предопределены в пределах программирования для Director'a. Ниже приведен пример системного обработчика, который вы можете обнаружить при нажатии кнопки.

on mouseDown
Put «This button has been pressed!»
end

Обработчики событий, определяемые пользователем Обработчики событий, определяемые пользователем, также называются индивидуальными обработчиками, или глобальными обработчиками. Они вызываются не событием, а действием, определяемым разработчиком (программистом). Вот пример индивидуального обработчика.
on myCustomAction //По определенному мной действию
Alert «Click OK to continue»
end 

События, определенные в системе



События, определенные в системе, также называются встроенными событиями. В таблице 10.1 приведены обработчики событий Director MX. Некоторые события будут обрабатываться, только если они находятся в определенных типах скриптов. Primary Events (Основные События) могут использоваться во всех типах скриптов. «Галочками» отмечены связи событий и скриптов37.

Таблица 10.1. Встроенные обработчики событий

Обработчик события
Основное событие
Событие спрайта
Скрипт труппы
Скрипт кадра
Скрипт фильма
prepareMovie
        V
prepareFrame
      V
 
startMovie
        V
stopMovie
        V
beginSprite
  V
  V
 
EndSprite
  V
  V
 
enterFrame
  V
  V
V
exitFrame
  V
  V
V
mouseDown
V
V
V
V
V
MouseUp
V
V
V
V
V
mouseEnter
  V
V
   
mouseLeave
  V
V
   
mouseUpOutside
  V
V
  V
mouseWithin
  V
V
  V
rightMouseDown
V
V
V
V
V
rightMouseUp
V
V
V
V
V
KeyDown
V
V
V
V
V
keyUp
V
V
V
V
V
timeout
        V
idle
      V
V

Практическое упражнение 10.1: Использование окна Message



Окно Message (Окно Сообщений) является полезным инструментом для тестирования скриптов в Director'e. Вы можете использовать окно Message для вызова обработчиков событий или для просмотра сообщений, активированных командами. В этом упражнении вы научитесь работать с окном Message.

Рассмотрим пример

Давайте рассмотрим завершенное упражнение.

1. Измените расположение различных панелей для того, чтобы было все видно.

2. Обратите внимание на следующие особенности завершенного фильма.


а) На сцене и в партитуре нет спрайтов.

б) В окне Cast имеется скрипт фильма.

в) В окне Cast дважды щелкните по элементу труппы Movie Script, чтобы посмотреть скрипт фильма. Закройте окно.

г) С помощью окна Message вы можете обратиться к скрипту фильма, вызвав индивидуальные обработчики событий.

3. Откройте окно Message, выбрав Window | Message.

4. Напечатайте ExecuteAlert и нажмите клавишу Enter. Фильм Director'a издаст звуковой сигнал, откроется окно предупреждений, и, после того как вы щелкнете по кнопке ОК, в окне Message появится сообщение «You just activated an Alert dialog box!» («Вы только что активировали диалоговое окно предупреждений!»).

Что должно получиться на экране

На рис. 10.10 показано окно Message, которое вы будете использовать для отображения сообщений на сцене в этом упражнении.



Рис. 10.10. Окно Message


Что должно получиться за сценой

На рис. 10.11 показано окно Script для скрипта фильма, в котором вы будете создавать скрипты в этом упражнении.



Рис. 10.11. Окно Script для скрипта фильма


Пошаговые инструкции

1. Создайте новый фильм, выбрав File | New | Movie.

2. Выберите File | Save As и поместите ваш новый файл в папку SaveWork на вашем жестком диске.

3. Если окно Cast не открыто, то откройте его, выбрав Window | Cast.

4. Если партитура не открыта, то откройте ее, выбрав Window | Score.

5. Давайте создадим индивидуальный обработчик событий в скрипте фильма для исполнения системного предупреждения. Начните писать новый скрипт фильма в окне Script следующим образом.

а) Выберите Window | Script.

б) Напечатайте приведенный ниже скрипт. После каждой строки нажимайте клавишу Enter.

on doAlert 
Alert «Click OK to continue»
put «You just activated an Alert dialog box!»
end

6. Щелкните по кнопке Recompile All Modified Scripts.

Director упорядочит скрипт: настроит отступы, проведет цветовое выделение текста скрипта и автоматически пронумерует строки скрипта, если перед этим установлены соответствующие флажковые кнопки. Оставьте окно Script (показанное на рис. 10.12) открытым, но передвиньте его в сторону.



Рис. 10.12. Окно Script с новым скриптом фильма


7. Откройте окно Message, выбрав Window | Message.

8. В окне будет отображено сообщение по умолчанию (-Welcome to Director-). Удалите это сообщение, напечатайте команду индивидуального обработчика doAlert и нажмите клавишу Enter. Director исполнит обработчик doAlert.

9. Давайте создадим индивидуальный обработчик, который будет обращаться к другому индивидуальному обработчику. По мере вашего совершенствования в Lingo вы обнаружите, что вами написано много скриптов, которые можно использовать в ряде других мест в пределах вашего фильма. Если вы создадите индивидуальные обработчики для вызова этих многократно используемых скриптов, то сократите объем необходимой для вас работы. В окне Script ниже предыдущего скрипта фильма напечатайте следующий код Lingo.

on ExecuteAlert
doAlert
end 

10. Если окно Message не открыто, откройте его, выбрав Window | Message. Напечатайте команду индивидуального обработчика ExecuteAlert и нажмите клавишу Enter. Director исполнит обработчик ExecuteAlert, который, в свою очередь, исполнит обработчик doAlert.

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