Add hooks for some Flash events

This commit is contained in:
Joshua Granick
2014-06-16 09:53:34 -07:00
parent 0ee39f5a86
commit e5364db04e
4 changed files with 100 additions and 1 deletions

View File

@@ -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<IKeyEventListener> {
}
#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<IKeyEventListener> {
#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
}

View File

@@ -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<IMouseEventListener> {
}
#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<IMouseEventListener> {
}
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
}

View File

@@ -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<ITouchEventListener> {
@@ -150,6 +156,27 @@ class TouchEventManager extends EventManager<ITouchEventListener> {
}
#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<ITouchEventListener> {
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
}

View File

@@ -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<IWindowEventListener> {
#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<IWindowEventListener> {
}
#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<IWindowEventListener> {
#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
}