АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Реакция на события мыши и клавиатуры

Читайте также:
  1. А. Аллергическая (иммунологическая) реакция замедленного типа
  2. А. Аллергическая (иммунологическая) реакция немедленного и замедленного типа
  3. А. Аллергическая (иммунологическая) реакция немедленного типа
  4. Акции и специальные события
  5. Алармы и события
  6. Аллергическая реакция на краску.
  7. Блока СКЗИ тахографа) информации о событиях
  8. Большинство битв в вашей жизни проиграны из-за невнимания к вещам и событиям.
  9. ВВод информации с Клавиатуры
  10. Вероятности события в независимых испытаниях.
  11. Вероятность появления хотя бы одного события.
  12. Вероятность случайного события – это количественная оценка объективной возможности появления данного события.

Обработка события наступления нового кадра

Чтобы отреагировать на событие наступления нового кадра 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);

}

}

}


1 | 2 | 3 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.)