38 lines
1014 B
Haxe
38 lines
1014 B
Haxe
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<DeviceAction, Bool>;
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|