package ru.m.control; import flash.display.Stage; import flash.events.KeyboardEvent; import hw.signal.Signal; import ru.m.control.DeviceAction; class KeyboardDevice implements IControlDevice { public var type(default, null):DeviceType; public var signal(default, null):Signal2; private var stage:Stage; public function new(stage:Stage) { this.stage = stage; type = DeviceType.KEYBOARD; signal = new Signal2(); stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp); } private function onKeyDown(event:KeyboardEvent):Void { signal.emit(KEY(event.keyCode), true); } private function onKeyUp(event:KeyboardEvent):Void { signal.emit(KEY(event.keyCode), false); } public function dispose():Void { if (stage != null) { stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyUp); stage = null; } } }