Keyboard
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | package { import flash.display.DisplayObject; import flash.events.Event; import flash.events.KeyboardEvent; /** * ... * @author Zero */ public final class Keyboard extends Array { public static var KEY_DOWN:int = 1; public static var KEY_UP:int = 0; public static var KEY_PRESSED:int = 2; public static var KEY_RELEASED:int = -1; private static var initialized:Boolean; //a reasonable 127 or 255 private static var char_count:int; public static function Initialize(main_class:DisplayObject, character_count:int = 127):void { if (initialized) return; initialized = true; char_count = character_count; main_class.stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDown); main_class.stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp); } private static function KeyDown(e:KeyboardEvent):void { Keyboard[e.keyCode] = (Keyboard[e.keyCode] == 0 ? 2 : 1); } private static function KeyUp(e:KeyboardEvent):void { Keyboard[e.keyCode] = -1; } public static function Update():void { for (var i:int = 0; i < char_count; i++) { if (Keyboard[i] > 0) Keyboard[i] = 1; else Keyboard[i] = 0; } } } } |
Mouse
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | package { import flash.display.DisplayObject; import flash.events.MouseEvent; /** * ... * @author Zero */ public final class Mouse extends Array { public static const LEFT:int = 0; public static const MIDDLE:int = 1; public static const RIGHT:int = 2; public static const BUTTON_DOWN:int = 1; public static const BUTTON_UP:int = 0; public static const BUTTON_PRESSED:int = 2; public static const BUTTON_RELEASED:int = -1; public static var initialized:Boolean; private static var mouse_dX:int, mouse_dY:int, mouse_X:int, mouse_Y:int; private static var mouse_moving:Boolean, mouse_delta_sign:Boolean = true; public static function Initialize(main_class:DisplayObject):void { if (initialized) return; initialized = true; main_class.stage.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown); main_class.stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp); main_class.stage.addEventListener(MouseEvent.MIDDLE_MOUSE_DOWN, MouseDown); main_class.stage.addEventListener(MouseEvent.MIDDLE_MOUSE_UP, MouseUp); main_class.stage.addEventListener(MouseEvent.RIGHT_MOUSE_DOWN, MouseDown); main_class.stage.addEventListener(MouseEvent.RIGHT_MOUSE_UP, MouseUp); main_class.stage.addEventListener(MouseEvent.MOUSE_MOVE, MouseMove); } private static function MouseDown(e:MouseEvent):void { var button_code:int; if (e.type == MouseEvent.MOUSE_DOWN) button_code = LEFT; if (e.type == MouseEvent.MIDDLE_MOUSE_DOWN) button_code = MIDDLE; if (e.type == MouseEvent.RIGHT_MOUSE_DOWN) button_code = RIGHT; Mouse[button_code] = (Mouse[button_code] == 0 ? 2 : 1); } private static function MouseUp(e:MouseEvent):void { var button_code:int; if (e.type == MouseEvent.MOUSE_UP) button_code = LEFT; if (e.type == MouseEvent.MIDDLE_MOUSE_UP) button_code = MIDDLE; if (e.type == MouseEvent.RIGHT_MOUSE_UP) button_code = RIGHT; Mouse[button_code] = -1; } private static function MouseMove(e:MouseEvent):void { mouse_dX = (int)(e.localX) - mouse_X; mouse_dY = (int)(e.localY) - mouse_Y; mouse_X = e.localX; mouse_Y = e.localY; mouse_moving = true; } public static function get Moving():Boolean { return mouse_moving; } public static function get X():int { return mouse_X; } public static function get Y():int { return mouse_Y; } public static function SetDeltaSign(flag:Boolean):void { mouse_delta_sign = flag; } public static function get DeltaX():int { return (mouse_delta_sign ? (mouse_dX < -1 ? -1 : mouse_dX > 1 ? 1 : 0) : mouse_dX); } public static function get DeltaY():int { return (mouse_delta_sign ? (mouse_dY < -1 ? -1 : mouse_dY > 1 ? 1 : 0) : mouse_dY); } public static function Update():void { for (var i:int = 0; i < 3; i++) { if (Mouse[i] > 0) Mouse[i] = 1; else Mouse[i] = 0; } mouse_moving = false; //reset delta sign mouse_dX = 0; mouse_dY = 0; } } } |
Usage Example
I use FlashDevelop :]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | package { import flash.display.Sprite; import flash.events.Event; /** * ... * @author Zero */ [SWF(backgroundColor='0x000000', frameRate='60')] public class Main extends Sprite { public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point Keyboard.Initialize(this); Mouse.Initialize(this); addEventListener(Event.ENTER_FRAME, Update); } private final function Update(e:Event):void { if (Keyboard[e2Key.D] == Keyboard.KEY_PRESSED) trace("Key Pressed"); if (Keyboard[e2Key.D] == Keyboard.KEY_DOWN) trace("Key Down"); if (Keyboard[e2Key.D] == Keyboard.KEY_RELEASED) trace("Key Released"); //Get any key pressed if (Keyboard.Pressed()) { trace(Keyboard.Pressed()) } if (Mouse[0] == Mouse.BUTTON_PRESSED) trace("Left Mouse Pressed"); if (Mouse[0] == Mouse.BUTTON_DOWN) trace("Left Mouse Down"); if (Mouse[0] == Mouse.BUTTON_RELEASED) trace("Left Mouse Released"); if (Mouse[1] == Mouse.BUTTON_PRESSED) trace("Middle Mouse Pressed"); if (Mouse[1] == Mouse.BUTTON_DOWN) trace("Middle Mouse Down"); if (Mouse[1] == Mouse.BUTTON_RELEASED) trace("Middle Mouse Released"); if (Mouse[2] == Mouse.BUTTON_PRESSED) trace("Right Mouse Pressed"); if (Mouse[2] == Mouse.BUTTON_DOWN) trace("Right Mouse Down"); if (Mouse[2] == Mouse.BUTTON_RELEASED) trace("Right Mouse Released"); if (Mouse.Moving) { trace("Mouse Delta X " + Mouse.DeltaX); trace("Mouse Delta Y " + Mouse.DeltaY); } //update has to be after events else everything is reset. Keyboard.Update(); Mouse.Update(); } } } |
No comments :
Post a Comment