flashdocs.net: все о macromedia flash 5, mx, 2004 pro, 8. Обучение: flash статьи flash уроки flash исходники flash софт, faq, а также flash мульты и flash игры
В примере клипа zapper.swf , когда пользователь передвигает божью коровку к розетке, насекомое падает, а розетка движется. Главная линейка (Timeline) имеет только один кадр и содержит три объекта: божью коровку, розетку и кнопку перезапуска (Reset). Каждый из этих объектов является экземпляром мувиклипа.
В клипе содержится один скрипт, назначенный экземпляру bug (насекомое), как показано ниже в панели Actions:
Панель Actions со скриптом, прикрепленным к экземпляру bug instance
Имя экземпляра насекомого - bug, а экземпляра розетки - zapper. В скрипте насекомое упоминается как this, потому что скрипт назначен насекомому, а ключевое слово this относится к объекту, который его содержит.
Есть два обработчика onClipEvent с двумя различными событиями: load и enterFrame. Команды в обработчике onClipEvent(load) выполняются только один раз - во время загрузки клипа. Команды в обработчике onClipEvent(enterFrame) выполняются каждый раз, при переходе воспроизведения на следующий кадр, это происходит даже в однокадровом клипе. Следующие команды выполняются внутри каждого обработчика onClipEvent
onClipEvent(load) Две переменные, initx и inity определены для сохранения начального положения x и y экземпляра bug этого мувиклипа. Событию onRelease экземпляра Reset определена и присвоена функция. Она вызывается при каждом нажатии на кнопку Reset. Функция возвращает божью коровку назад, в исходное положение на Сцене, восстанавливает ее первоначальный угол поворота и значения alpha и присваивает переменной zapped значение false.
onClipEvent(enterFrame) Условное выражение if использует метод hitTest чтобы проверить, соприкасается ли экземпляр насекомого с экземпляром розетки (_root.zapper). Возможны два результата вычислений: true или false.
Если метод hitTest возвращает значение true, вызывается метод stopDrag и переменной zapper присваивается значение true, свойства альфа и вращение изменяются, и экземпляр zapped начинает воспроизводиться.
Если hitTest возвращает значение false, операторы внутри {} следующих непосредственно за выражением if не выполняются.
Две команды-обработчики on заданы в экземпляре bug с двумя разными событиями: press и release. Команды в обработчике on(press) выполняются при нажатии мышью на экземпляр bug. Команды в обработчике on(release) выполняются, при отпускании мышью экземпляра bug. Следующие команды происходят внутри каждого обработчика onClipEvent
on(press) A команда startDrag делает божью коровку перемещаемой. Поскольку скрипт назначен экземпляру bug, ключевое слово this ссылается на сам экземпляр:
on (press) { this.startDrag(); }
on(release) A команда stopDrag останавливает перемещение: