Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Частота событий от нажатой кнопки (http://www.flasher.ru/forum/showthread.php?t=148695)

MakTpaxep 08.01.2011 19:59

Частота событий от нажатой кнопки
 
Всем привет! Такой вопрос:

Если мы вешаем листенер на keydown и там, например, изменяем координаты объекта - то от чего зависит частота таких срабатываний? Можно ли в ентерфрейм сделать проверку на то какая кнопка нажата? И как осуществить движение по диагонали - когда зажаты две кнопки??

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

Jarproger 08.01.2011 20:11

В AS 2.0 был метод key.isDown, но 3-й AS не предпологает такого. Но можно написать его самому)
Я класс для этого написал, пишите в личку, скину

silin 08.01.2011 21:13

>>от чего зависит частота таких срабатываний?
от системных настроек, имхо
>>Можно ли в ентерфрейм сделать проверку на то какая кнопка нажата?
в том же ентерфрейм проверять флаг(массив флагов), сбрасываемый/выставляемый по нажатию/опусканию кнопки

goodguy 08.01.2011 21:49

Цитата:

Можно ли в ентерфрейм сделать проверку на то какая кнопка нажата?
Все на самом деле гораздо проще.
Нужно создать переменные типа Булево, например
Код AS3:

private var leftPressed:Boolean = false;

а потом в событии клавиатуры (KEY_DOWN) проверять код клавиши:
Код AS3:

if (e.keyCode == Keyboard.LEFT)
      leftPressed = true;

а в KEY_UP делать обратную проверку:
Код AS3:

if (e.keyCode == Keyboard.LEFT)
      leftPressed = false;

После этого в энтер фрейме можно проверять уже не сами клавиши, а эту переменную

Код AS3:

if (leftPressed) // производим какое-то действие


В таком случае и это:
Цитата:

И как осуществить движение по диагонали - когда зажаты две кнопки??
будет работать без проблем

TanaTiX 08.01.2011 21:52

А если нужно проверять 10 одновременно нажатых клавиш (утрирую)? Думаю, битовая маска могла бы подойти в этом случае больше.
Конечно, если речь о контролах и шифтах, то необходимости в таких извратах нет.

silin 08.01.2011 21:54

10 одновременно нажатых клавиш - не получится,

goodguy 08.01.2011 21:55

TanaTiX, возможно, но даже я (уже не новичок) не очень представляю как это реализовать. А топикстартер явно новичок

silin 08.01.2011 22:07

сложность в том, что система не отдает все нажатые клавиши (три - не всегда и не любые)

goodguy 08.01.2011 22:13

но две отдает без проблем

TanaTiX 08.01.2011 23:07

Цитата:

Сообщение от silin (Сообщение 962918)
10 одновременно нажатых клавиш - не получится,

Вопрос не именно в нажатых клавишах. Можно по условию нажимать их с определенным интервалом. Да и не о клавишах я.


ЗЫ. а вообще на досуге нужно будет попробовать ради спортивного интереса...


Часовой пояс GMT +4, время: 14:48.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.