Handle mouse event button ID on Flash and HTML5

This commit is contained in:
Joshua Granick
2014-06-26 06:33:06 -07:00
parent 0df67dfea2
commit 867d555076
2 changed files with 34 additions and 37 deletions

View File

@@ -78,19 +78,20 @@ class MouseEventManager {
} else { } else {
var wheelEvent = cast(event, js.html.WheelEvent); eventInfo.x = untyped event.wheelDeltaX;
eventInfo.x = wheelEvent.wheelDeltaX; eventInfo.y = untyped event.wheelDeltaY;
eventInfo.y = wheelEvent.wheelDeltaY;
} }
eventInfo.button = event.button;
#elseif flash #elseif flash
eventInfo.type = switch (event.type) { eventInfo.type = switch (event.type) {
case flash.events.MouseEvent.MOUSE_DOWN: MOUSE_DOWN; case "mouseDown", "middleMouseDown", "rightMouseDown": MOUSE_DOWN;
case flash.events.MouseEvent.MOUSE_MOVE: MOUSE_MOVE; case "mouseMove", "middleMouseMove", "rightMouseMove": MOUSE_MOVE;
case flash.events.MouseEvent.MOUSE_UP: MOUSE_UP; case "mouseUp", "middleMouseUp", "rightMouseUp": MOUSE_UP;
default: MOUSE_WHEEL; default: MOUSE_WHEEL;
} }
@@ -107,21 +108,29 @@ class MouseEventManager {
} }
eventInfo.button = switch (event.type) {
case "middleMouseDown", "middleMouseMove", "middleMouseUp": 1;
case "rightMouseDown", "rightMouseMove", "rightMouseUp": 2;
default: 0;
}
#end #end
switch (eventInfo.type) { switch (eventInfo.type) {
case MOUSE_DOWN: case MOUSE_DOWN:
onMouseDown.dispatch (eventInfo.x, eventInfo.y, cast eventInfo.button); onMouseDown.dispatch (eventInfo.x, eventInfo.y, eventInfo.button);
case MOUSE_UP: case MOUSE_UP:
onMouseUp.dispatch (eventInfo.x, eventInfo.y, cast eventInfo.button); onMouseUp.dispatch (eventInfo.x, eventInfo.y, eventInfo.button);
case MOUSE_MOVE: case MOUSE_MOVE:
onMouseMove.dispatch (eventInfo.x, eventInfo.y, cast eventInfo.button); onMouseMove.dispatch (eventInfo.x, eventInfo.y, eventInfo.button);
case MOUSE_WHEEL: case MOUSE_WHEEL:
@@ -138,10 +147,13 @@ class MouseEventManager {
#if js #if js
window.element.addEventListener ("mousedown", handleEvent, true); var events = [ "mousedown", "mousemove", "mouseup", "mousewheel" ];
window.element.addEventListener ("mousemove", handleEvent, true);
window.element.addEventListener ("mouseup", handleEvent, true); for (event in events) {
window.element.addEventListener ("mousewheel", handleEvent, true);
window.element.addEventListener (event, handleEvent, true);
}
// Disable image drag on Firefox // Disable image drag on Firefox
/*Browser.document.addEventListener ("dragstart", function (e) { /*Browser.document.addEventListener ("dragstart", function (e) {
@@ -154,10 +166,13 @@ class MouseEventManager {
#elseif flash #elseif flash
Lib.current.stage.addEventListener (flash.events.MouseEvent.MOUSE_DOWN, handleEvent); var events = [ "mouseDown", "mouseMove", "mouseUp", "mouseWheel", "middleMouseDown", "middleMouseMove", "middleMouseUp", "rightMouseDown", "rightMouseMove", "rightMouseUp" ];
Lib.current.stage.addEventListener (flash.events.MouseEvent.MOUSE_MOVE, handleEvent);
Lib.current.stage.addEventListener (flash.events.MouseEvent.MOUSE_UP, handleEvent); for (event in events) {
Lib.current.stage.addEventListener (flash.events.MouseEvent.MOUSE_WHEEL, handleEvent);
Lib.current.stage.addEventListener (event, handleEvent);
}
#end #end
@@ -175,14 +190,14 @@ class MouseEventManager {
private class MouseEventInfo { private class MouseEventInfo {
public var button:MouseEventButton; public var button:Int;
public var type:MouseEventType; public var type:MouseEventType;
public var x:Float; public var x:Float;
public var y:Float; public var y:Float;
public function new (type:MouseEventType = null, x:Float = 0, y:Float = 0, button:MouseEventButton = null) { public function new (type:MouseEventType = null, x:Float = 0, y:Float = 0, button:Int = 0) {
this.type = type; this.type = type;
this.x = x; this.x = x;
@@ -202,15 +217,6 @@ private class MouseEventInfo {
} }
@:enum private abstract MouseEventButton(Int) {
var MOUSE_BUTTON_LEFT = 0;
var MOUSE_BUTTON_MIDDLE = 1;
var MOUSE_BUTTON_RIGHT = 2;
}
@:enum private abstract MouseEventType(Int) { @:enum private abstract MouseEventType(Int) {
var MOUSE_DOWN = 0; var MOUSE_DOWN = 0;

View File

@@ -8,15 +8,6 @@
namespace lime { namespace lime {
enum MouseEventButton {
MOUSE_BUTTON_LEFT,
MOUSE_BUTTON_MIDDLE,
MOUSE_BUTTON_RIGHT
};
enum MouseEventType { enum MouseEventType {
MOUSE_DOWN, MOUSE_DOWN,