2016-10-15 10 views
0

Так мое понимание, есть коды клавиш для представления нажатия клавиш, например:keycode для MouseEvent?

public function left(e:KeyboardEvent):void 
{ 
    if (e.keycode == 65) 
    { 
     leftKey = true; 
    } 
} 

Я хочу сделать что-то подобное с этой логикой и применять его для событий мыши. Я искал в Google, но не нашел много результатов для Flashdevelop AS3. Будет ли ключевой код для представления событий мыши? Например:

stage.addEventListener(MouseEvent.MOUSE_DOWN, down); 
stage.addEventListener(MouseEvent.MOUSE_MOVE, move); 
stage.addEventListener(MouseEvent.CLICK, click); 

public function down(e:MouseEvent):void 
{ 
    if (e.keycode == ?) 
} 
public function move(e:MouseEvent):void 
{ 
    if (e.keycode == ?) 
} 
public function click(e:MouseEvent):void 
{ 
    if (e.keycode == ?) 
} 

Заранее спасибо!

+0

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/MouseEvent.html –

+0

Вы имеете в виду левую, среднюю или правую кнопки мыши? Или, если нажата клавиша клавиатуры? Во всяком случае, документация по этому поводу великолепна. Просто прочитайте это, и вы должны увидеть, что вам нужно сделать. Вернитесь сюда, если у вас есть более конкретный вопрос. –

+0

Потому что ваш пример на самом деле не имеет смысла ... как может быть ключевой код для мыши MOVE? –

ответ

0

Когда вы запускаете событие мыши, которое имеет прослушиватель, прикрепленный к нему, то функция, связанная с этим слушателем, будет вызвана. Период. Вам не нужно снова проверять, произошло ли событие мыши. Это целая красота слушателей событий. Чтобы убедиться, что вы его получили, я отправлю пример.

stage.addEventListener(MouseEvent.CLICK,mClick); 

Отлично. Мы добавили слушателя на сцену. Теперь, когда вы нажимаете в любом месте сцены, этот слушатель вызовет функцию mClick для вызова. Теперь напишем функцию mClick.

private function mClick(me:MouseEvent):void{ 
    trace("me.target.x",me.target.x); 
    trace("me.target.y",me.target.y); 
} 

me просто переменная, которую мы выбрали, чтобы представить событие, которое инициировало эту функцию. Event - класс. A MouseEvent является подклассом Event. Поэтому мы говорим, что me является Event подкатегория MouseEvent и что это ожидаемый ввод для этой функции. Если бы вы попытались вызвать эту функцию в другом месте вашего кода, это вызовет ошибку, говорящую, что эта функция ожидает какой-то входной сигнал.

me.target является вещь, которая вызвала событие, которое активируется. В этом случае это мышь, поэтому me.target.x будет x-позицией мыши в момент щелчка мыши.

Это все, что нужно. Вы просто немного смутили себя, пытаясь применить конкретное решение к другой проблеме, а именно, как регистрировать нажатия клавиш на клавиатуре. Они обрабатываются немного принципиально по-разному. С помощью клавиатуры мы проверяем прослушивание, если на клавиатуре была нажата клавиша a, а затем в обработчике событий мы определяем , который был нажат клавишей. С событиями мыши у нас будет другой слушатель для перемещения мыши, щелчка мыши, щелчок левой кнопкой мыши и средний щелчок мышью. Поскольку каждый из этих конкретных событий имеет свой собственный слушатель, мы не должны оценить, какая кнопка была нажата в обработчике:

public function left(e:KeyboardEvent):void 
{ 
    if (e.keycode == 65) 
    { 
     leftKey = true; 
    } 
} 

e это то, что вызвало событие. В этом случае клавиша клавиатуры. Каждый ключ имеет код ключа. Но вместо написания другого слушателя для каждого отдельного ключа на клавиатуре мы можем просто написать один прослушиватель и одну функцию, а затем оценить, какая клавиша была нажата внутри функции. Как указывалось выше, с помощью мыши левая кнопка мыши получает свой собственный прослушиватель событий, поэтому нет необходимости (или способности) проверять это в прослушивателе событий. Есть такие объекты, как ROLL_OVER и MOUSE_UP и MOUSE_DOWN. Посмотрите документацию для полного списка.

+0

О, я вижу. Так происходит в реальном времени, когда я выполняю действие, нет необходимости проверять что-либо. Еще раз спасибо, господин Дэвис! – Zulu

+0

Справа снова @ Нил Дэвис :) – tatactic