Теперь выделим наш экземпляр и привяжем к нему довольно сложный сценарий, содержащий обработчики сразу двух событий. Для удобства рассмотрим их отдельно друг от друга.
onClipEvent(load) {
d = 1;
}
Обработчик события load помещает значение в переменную d сразу после загрузки клипа. Эта переменная задает величину перемещения нашего экземпляра при нажатии любой клавиши-стрелки. Можно задать и большее число, чтобы заставить клип двигаться быстрее.
Второй фрагмент сценария выглядит более сложным:
onClipEvent(keyDown) {
switch (Key.getCode()) {
case Key.UP:
_root.circle._y — = d;
break;
case Key.DOWN:
_root.circle._y += d;
break;
case Key.LEFT:
_root.circle._x — = d;
break;
case Key.RIGHT:
_root.circle._x += d;
break;
}
}
Но, несмотря на кажущуюся сложность, этот обработчик события keyDown довольно-таки прост. Он сравнивает значение виртуального кода нажатой клавиши с кодами клавиш-стрелок и, если одна из них нажата, изменяет соответствующую координату клипа circle .
Теперь запустим созданный фильм на воспроизведение в отдельном окне. Он работает!
Конечно, наш пример очень прост. Тем не менее, руководствуясь им, можно создавать и несравнимо более сложные вещи. Например — как насчет игры "15", реализованной на Flash? Или всем известного "Сапера"?
Обработка нажатий клавиш с помощью перехватчика
Второй способ обработать нажатия клавиш — использовать перехватчик. Этот перехватчик должен иметь свойства onKeyUp и onKeyDown , которым должны быть присвоены функции, обрабатывающие соответствующие события. Событие onKeyDown возникает при нажатии клавиши, а событие onKeyUp — при ее отпускании.
Давайте перепишем созданный ранее сценарий так, чтобы он использовал обработчик. В данном случае он будет привязан не к клипу, а к первому кадру анимации фильма.
Рассмотрим этот сценарий по частям.
Сначала:
var d = 1;
Это уже знакомая нам переменная, задающая величину смещения клипа за один шаг.
А дальше:
function fOnKeyDown() {
switch (Key.getCode()) {
case Key.UP:
_root.circle._y — = d;
break;
case Key.DOWN:
_root.circle._y += d;
break;
case Key.LEFT:
_root.circle._x — = d;
break;
case Key.RIGHT:
_root.circle._x += d;
break;
}
}
А это объявление функции, обрабатывающей событие onKeyDown . Ее код практически совпадает с кодом обработчика события keyDown для клипа, написанного нами ранее.
И, наконец:
var myListener = new Object ();
myListener.onKeyDown = fOnKeyDown;
Key.addListener(myListener);
Этот фрагмент кода создает и привязывает к объекту Key перехватчик. Собственно, это тоже нам знакомо.
Для взаимодействия с мышью служит объект Mouse . Единственный экземпляр этого объекта под именем Mouse создается самим Flash.
Прежде всего, этот объект предоставляет методы hide и show . Первый метод скрывает курсор мыши, а второй — вновь выводит его на экран. Ни один из них не принимает параметров. Эти методы используются, как правило, при создании фигурных курсоров мыши.
Объект Mouse поддерживает также три события:
□ событие onMouseDown возникает при нажатии левой кнопки мыши;
□ событие onMouseUp возникает при отпускании левой кнопки мыши;
□ событие onMouseMove возникает при любом перемещении мыши;
□ событие onMouseWheel возникает при прокрутке колесика мыши, если такое имеется.
Для обработки этих событий используются перехватчики. Все функции, обрабатывающие их, не принимают параметров, за исключением функции-обработчика события onMouseWheel . Она имеет такой формат:
function <���Имя> ( [<���Смещение>, <���Клип, над которым находится курсор мыши>])
Первый из необязательных параметров этой функции определяет смещение, на которое пользователь прокрутил колесико мыши. Оно передается в числовом виде в так называемых "тиках". Второй параметр передает ссылку на клип, над которым находился курсор мыши во время прокрутки ее колесика.
Для отслеживания координат мыши можно использовать свойства _xmouse и _ymouse объекта movieClip. Этот "нужный экземпляр" может быть как внешней анимацией (_root ), так и каким-либо вложенным клипом. Эти же свойства поддерживаются и объектом Button.
Читать дальше
Конец ознакомительного отрывка
Купить книгу