KeyChecker v0.2
Запись от Партизан размещена 27.11.2010 в 12:07
Из побуждений основанных на справедливых замечаниях камрадов [iNils, dimarik, udaff] , выкладываю следующую версию на
Потеря фокуса теперь отслеживается.
Теперь можно проверить сразу несколько клавиш(сочетание нажатий), KeyCheck.isDown(Keyboard.UP,Keyboard.TAB) например. Тут меня несколько смущает одна вещь. Последовательность нажатий не учитывается, как и количество клавиш. Например последовательности LEFT+UP+TAB и LEFT+TAB при нажатии этих трех кнопок будут возвращать true. Хотя может это просто мои заморочки? Или стоит сделать возможность учета последовательности нажатий? Часто ли нужна такая вещь?
package utils { import flash.display.Stage; import flash.events.Event; import flash.events.KeyboardEvent; /** * ... * @author Mikhail Klabukov (SaintPartizan) Q_QWERT@mail.ru */ public class KeyCheck extends Object { private var _keys:Array = []; public function KeyCheck(stage:Stage):void { if (stage) { stage.addEventListener(KeyboardEvent.KEY_UP, keyUp, false, 0, true); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown, false, 0, true); stage.addEventListener(Event.DEACTIVATE, loseFocus, false, 0, true); }else { throw new ArgumentError("Stage needed") } } private function loseFocus(e:Event):void { _keys = []; } private function keyDown(e:KeyboardEvent):void { _keys[e.keyCode] = true; } private function keyUp(e:KeyboardEvent):void { _keys[e.keyCode] = false; } public function isDown(keyCode:uint, ...keys):Boolean { var down:Boolean = _keys[keyCode]; if (keys.length > 0 && down) { for each(var i:uint in keys) { if (!_keys[i]) { down = false; break; } } } return down; } } }
Всего комментариев 0
Комментарии
Последние записи от Партизан
- TransformUtil (20.05.2012)
- Between2Nums (28.11.2010)
- Termination (27.11.2010)
- KeyChecker v0.2 (27.11.2010)
- KeyChecker (26.11.2010)