Macromedia Flash Professional 8. Графика и анимация
Шрифт:
if (Key.isDown(Key.ENTER)) {. }
Приведенное выше выражение проверяет, была ли нажата клавиша <Enter>.
Метод isToggied возвращает значение true, если в момент его вызова была включена одна из клавиш-переключателей: <NumLock> или <CapsLock>. Он принимает единственный параметр — числовое значение 20 (виртуальный код клавиши <CapsLock>) или 144 (виртуальный код клавиши <NumLock>).
Пример вызова метода isToggied:
if (Key.isToggied(20)) { s = s.toLowerCase; }
Кроме вышеописанных методов, объект Key
Обработка нажатий клавиш в клипах
А теперь поговорим о том, как же собственно выполняется обработка нажатий клавиш клавиатуры. Выполнить ее можно двумя способами, которые мы и рассмотрим в этом разделе.
Первый — более простой — способ обработки нажатий клавиш — заключается в привязке к клипу, который будет реагировать на нажатия, обработчика события keyDown, возникающего при нажатии клавиши. Мы рассмотрим создание этого обработчика на примере.
Создадим новый документ Flash. В нем создадим образец-клип, содержащий простую геометрическую фигуру, например, круг. Поместим экземпляр этого образца на рабочий лист и назовем его circle. Этот экземпляр мы заставим перемещаться по листу в ответ на нажатия клавиш — стрелок.
Теперь выделим наш экземпляр и привяжем к нему довольно сложный сценарий, содержащий обработчики сразу двух событий. Для удобства рассмотрим их отдельно друг от друга.
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.