From e5364db04e8f8fd09a8d89018d15282aeb2f9593 Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Mon, 16 Jun 2014 09:53:34 -0700 Subject: [PATCH] Add hooks for some Flash events --- lime/ui/KeyEventManager.hx | 24 ++++++++++++++++++++++++ lime/ui/MouseEventManager.hx | 26 ++++++++++++++++++++++++++ lime/ui/TouchEventManager.hx | 32 ++++++++++++++++++++++++++++++++ lime/ui/WindowEventManager.hx | 19 ++++++++++++++++++- 4 files changed, 100 insertions(+), 1 deletion(-) diff --git a/lime/ui/KeyEventManager.hx b/lime/ui/KeyEventManager.hx index 2e778b990..36aff1d22 100644 --- a/lime/ui/KeyEventManager.hx +++ b/lime/ui/KeyEventManager.hx @@ -6,6 +6,8 @@ import lime.system.System; #if js import js.Browser; +#elseif flash +import flash.Lib; #end @@ -95,6 +97,25 @@ class KeyEventManager extends EventManager { } + #if flash + private function handleFlashEvent (event:flash.events.KeyboardEvent):Void { + + keyEvent.code = event.keyCode; + keyEvent.key = event.charCode; + + keyEvent.ctrlKey = event.ctrlKey; + keyEvent.altKey = event.altKey; + keyEvent.shiftKey = event.shiftKey; + //keyEvent.metaKey = event.commandKey; + + keyEvent.type = (event.type == flash.events.KeyboardEvent.KEY_DOWN ? KEY_DOWN : KEY_UP); + + handleEvent (keyEvent); + + } + #end + + private static function registerWindow (_):Void { if (instance != null) { @@ -102,6 +123,9 @@ class KeyEventManager extends EventManager { #if js Browser.window.addEventListener ("keydown", instance.handleDOMEvent, false); Browser.window.addEventListener ("keyup", instance.handleDOMEvent, false); + #elseif flash + Lib.current.stage.addEventListener (flash.events.KeyboardEvent.KEY_DOWN, instance.handleFlashEvent); + Lib.current.stage.addEventListener (flash.events.KeyboardEvent.KEY_UP, instance.handleFlashEvent); #end } diff --git a/lime/ui/MouseEventManager.hx b/lime/ui/MouseEventManager.hx index bacc32fc5..834413deb 100644 --- a/lime/ui/MouseEventManager.hx +++ b/lime/ui/MouseEventManager.hx @@ -6,6 +6,8 @@ import lime.system.System; #if js import js.Browser; +#elseif flash +import flash.Lib; #end @@ -126,6 +128,26 @@ class MouseEventManager extends EventManager { } + #if flash + private function handleFlashEvent (event:flash.events.MouseEvent):Void { + + mouseEvent.x = event.stageX; + mouseEvent.y = event.stageY; + + mouseEvent.type = switch (event.type) { + + case flash.events.MouseEvent.MOUSE_DOWN: MOUSE_DOWN; + case flash.events.MouseEvent.MOUSE_MOVE: MOUSE_MOVE; + default: MOUSE_UP; + + } + + handleEvent (mouseEvent); + + } + #end + + private static function registerWindow (window:Window):Void { if (instance != null) { @@ -144,6 +166,10 @@ class MouseEventManager extends EventManager { } return true; }, false);*/ + #elseif flash + Lib.current.stage.addEventListener (flash.events.MouseEvent.MOUSE_DOWN, instance.handleFlashEvent); + Lib.current.stage.addEventListener (flash.events.MouseEvent.MOUSE_MOVE, instance.handleFlashEvent); + Lib.current.stage.addEventListener (flash.events.MouseEvent.MOUSE_UP, instance.handleFlashEvent); #end } diff --git a/lime/ui/TouchEventManager.hx b/lime/ui/TouchEventManager.hx index bd3c51012..e90096081 100644 --- a/lime/ui/TouchEventManager.hx +++ b/lime/ui/TouchEventManager.hx @@ -4,6 +4,12 @@ package lime.ui; import lime.app.EventManager; import lime.system.System; +#if flash +import flash.ui.Multitouch; +import flash.ui.MultitouchInputMode; +import flash.Lib; +#end + @:allow(lime.ui.Window) class TouchEventManager extends EventManager { @@ -150,6 +156,27 @@ class TouchEventManager extends EventManager { } + #if flash + private function handleFlashEvent (event:flash.events.TouchEvent):Void { + + touchEvent.id = event.touchPointID; + touchEvent.x = event.stageX; + touchEvent.y = event.stageY; + + touchEvent.type = switch (event.type) { + + case flash.events.TouchEvent.TOUCH_BEGIN: TOUCH_START; + case flash.events.TouchEvent.TOUCH_MOVE: TOUCH_MOVE; + default: TOUCH_END; + + } + + handleEvent (touchEvent); + + } + #end + + private static function registerWindow (window:Window):Void { if (instance != null) { @@ -158,6 +185,11 @@ class TouchEventManager extends EventManager { window.element.addEventListener ("touchstart", instance.handleDOMEvent, true); window.element.addEventListener ("touchmove", instance.handleDOMEvent, true); window.element.addEventListener ("touchend", instance.handleDOMEvent, true); + #elseif flash + Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT; + Lib.current.stage.addEventListener (flash.events.TouchEvent.TOUCH_BEGIN, instance.handleFlashEvent); + Lib.current.stage.addEventListener (flash.events.TouchEvent.TOUCH_MOVE, instance.handleFlashEvent); + Lib.current.stage.addEventListener (flash.events.TouchEvent.TOUCH_END, instance.handleFlashEvent); #end } diff --git a/lime/ui/WindowEventManager.hx b/lime/ui/WindowEventManager.hx index 00f8f4250..58009d02d 100644 --- a/lime/ui/WindowEventManager.hx +++ b/lime/ui/WindowEventManager.hx @@ -5,7 +5,11 @@ import lime.app.EventManager; import lime.system.System; #if js +import js.html.Event; import js.Browser; +#elseif flash +import flash.events.Event; +import flash.Lib; #end @@ -46,7 +50,7 @@ class WindowEventManager extends EventManager { #if js - private function handleDOMEvent (event:js.html.Event):Void { + private function handleDOMEvent (event:Event):Void { windowEvent.type = (event.type == "focus" ? WINDOW_ACTIVATE : WINDOW_DEACTIVATE); handleEvent (windowEvent); @@ -82,6 +86,16 @@ class WindowEventManager extends EventManager { } + #if flash + private function handleFlashEvent (event:Event):Void { + + windowEvent.type = (event.type == Event.ACTIVATE ? WINDOW_ACTIVATE : WINDOW_DEACTIVATE); + handleEvent (windowEvent); + + } + #end + + private static function registerWindow (_):Void { if (instance != null) { @@ -89,6 +103,9 @@ class WindowEventManager extends EventManager { #if js Browser.window.addEventListener ("focus", instance.handleDOMEvent, false); Browser.window.addEventListener ("blur", instance.handleDOMEvent, false); + #elseif flash + Lib.current.stage.addEventListener (Event.ACTIVATE, instance.handleFlashEvent); + Lib.current.stage.addEventListener (Event.DEACTIVATE, instance.handleFlashEvent); #end }