|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Реакция на события мыши и клавиатурыОбработка события наступления нового кадра Чтобы отреагировать на событие наступления нового кадра enterFrame, надо указать приложению слушать это событие и определить, какой метод должен вызываться при его возникновении. Это делается с помощью метода addEventListener, который выглядит так: addEventListener(type:String, listener:Function) Метод addEventListener имеет два обязательных параметра и несколько дополнительных. Параметр type - это тип ожидаемого события. Для указания типа события рекомендуется использовать статические свойства класса Event (Событие). Класс Event уже должен быть импортирован, поэтому можно вызывать его метод addEventListener следующим образом: addEventListener(Event.ENTER_FRAME, onEnterFrame); Второй параметр, onEnterFrame, ссылается на другой метод класса. В ActionScript 3.0 нет требования, чтобы этот метод назывался именно onEnterFrame. Однако составлять имя метода-обработчика из on и имени ожидаемого события - это общепринятая традиция. При вызове этот метод принимает экземпляр класса Event, поэтому потребуется импортировать этот класс и определить метод, чтобы он принимал объект события: import flash.events.Event; private function onEnterFrame(event:Event) { } Объект event содержит информацию о событии, которая может пригодится при его обработке. Даже если он не используется, все равно надо настроить обработчик на его прием. В ActionScript 3.0 областью видимости метода-обработчика остается его класс. Пример 1. Приложение для последовательной отрисовки случайных линий по наступлению нового кадра: package { import flash.display.Sprite; import flash.events.Event; public class Example1 extends Sprite { public function Example1() { graphics.lineStyle(1, 0, 1); addEventListener(Event.ENTER_FRAME, onEnterFrame); // добавление слушателя } private function onEnterFrame(event:Event):void { // тело слушателя события Event.ENTER_FRAME graphics.lineTo(Math.random()*400, Math.random()*400); } } } Реакция на события мыши и клавиатуры Обработка событий мыши и клавиатуры очень похожа на обработку события enterFrame, но требует некоторой дополнительной работы. В случае событий мыши основной класс приложения не будет получать их напрямую, поэтому он должен слушать их по другому объекту списка отображения. Пример 2. Создать спрайт, добавляющийся в список отображения, и в нем отрисовывается прямоугольник. package { import flash.display.Sprite; import flash.events.MouseEvent; public class Example2 extends Sprite { private var sprite1:Sprite; public function Example2() { sprite1 = new Sprite(); addChild(sprite1); sprite1.graphics.beginFill(0xffffff); sprite1.graphics.drawRect(0, 0, 400, 400); sprite1.graphics.endFill(); sprite1.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); sprite1.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); } Имена событий мыши определяются в классе MouseEvent и методы-обработчики получают экземпляр класса MouseEvent, поэтому данный класс надо импортировать (см. пример 2). Далее определяем два метода-обработчика, onMouseDown и onMouseUp: private function onMouseDown(event:MouseEvent):void { sprite1.graphics.lineStyle(1, 0, 1); sprite1.graphics.moveTo(mouseX, mouseY); sprite1.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); } private function onMouseUp(event:MouseEvent):void { sprite1.removeEventListener(MouseEvent.MOUSE.MOVE, onMouseMove); } Методы onMouseDown задают стиль линии нового спрайта и перемещают рисующий курсор в позицию, соответствующую положению мыши. Затем вводится третий слушатель событий мыши для события MouseMove. Методы onMouseUp удаляют слушателя с помощью метода removeEventListener. Его синтаксис аналогичен addEventListener, но указывает классу прекратить слушать заданное событие. Далее определяется onMouseMove, а класс и пакет закрываются: private function onMouseMove(event:MouseEvent):void { sprite1.graphics.lineTo(mouseX, mouseY); } } } Чтобы слушать и отвечать на события клавиатуры, объект, получающий события, всего лишь должен иметь фокус. Для основного приложения это делается путем добавления строки: stage.focus = this; Пример 3. Создать класс, который будет слушать событие keyDown и выводить код символа для этой клавиши. Для событий клавиатуры применяется класс KeyboardEvent. package { import flash.display.Sprite; import flash.events.KeyboardEvent; public class Example3 extends Sprite { public function Example3() { stage.focus = this; addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); } private function onKeyDown(event:KeyboardEvent):void { trace("key down: " + event.charCode); } } } Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |