Форум 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=160968)

lolsuicide 19.07.2011 17:37

Обработка клавиш
 
Реализовал нажатие клавиш вот таким способом:
Код AS3:

public var pressedKeys:Object = { };        //массив клавиш        
stage.addEventListener(KeyboardEvent.KEY_DOWN, key_down);
stage.addEventListener(KeyboardEvent.KEY_UP, key_up);       
 
public function key_press() // вызываю событие в каждом кадре
{
        ...
        if (pressedKeys[32])                // пример обработки действия по нажатию
        {
                ...
        }
        if (pressedKeys[192])                // и т.д. ифы используемых клавиш
        {
                ...
        }
        ...
}
 
function key_down(e:KeyboardEvent)
{
        if( pressedKeys[ e.keyCode ] )
                return;
        pressedKeys[ e.keyCode ] = 1;
}
 
function key_up( e:KeyboardEvent )
{
        delete pressedKeys[ e.keyCode ];
}

1 - По идее тут можно хоть 10 кнопок нажать, все должны обрабатываться, о нажатия иногда или залепают или он не реагирует на следующую зажатую клавишу, как это можно поправить?
2 - Как узнать какие клавиши нажаты в данный момент - как вынуть список из pressedKeys?

maxkar 19.07.2011 18:41

1. Поменять клавиатуру. Проблема аппаратная. Большинство клавиатур не умеет обрабатывать нажатие большого количества клавиш одновременно. И количество клавиш может зависеть от нажатых комбинаций (т.е. какие-то 5 клавиш одновременно нажимаются, а другие 5 - уже нет). Можно попробовать "геймерские" модели. Какие-то старые позволяли относительно большое количество одновременно нажатых клавиш (вроде бы могли быть любые 4). Сейчас не знаю.
2. Никак. В силу проблемы из предыдущего пункта.

lolsuicide 19.07.2011 19:45

ок, если предположить что 1 проблема решена, как определить, какие из pressedKeys - true?

gloomyBrain 19.07.2011 20:43

Достаточно использовать массив вместо объекта. Вообще не понятно, зачем тут Object, если в качестве ключей Вы используете не строки


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

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