From 629c14c9e633d13fe0a22f79687fab5e318440f4 Mon Sep 17 00:00:00 2001 From: Christian Afonso Ferreira Date: Tue, 5 Apr 2016 19:16:52 -0300 Subject: [PATCH] Mouse move relative event for Flash and HTML5 --- lime/_backend/flash/FlashApplication.hx | 16 ++++++++++++++-- lime/_backend/html5/HTML5Window.hx | 14 +++++++++----- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/lime/_backend/flash/FlashApplication.hx b/lime/_backend/flash/FlashApplication.hx index a4881bc9e..ccd77f5cf 100644 --- a/lime/_backend/flash/FlashApplication.hx +++ b/lime/_backend/flash/FlashApplication.hx @@ -25,6 +25,8 @@ import lime.ui.Window; class FlashApplication { + private var cacheMouseX:Float; + private var cacheMouseY:Float; private var cacheTime:Int; private var currentTouches = new Map (); private var mouseLeft:Bool; @@ -38,6 +40,9 @@ class FlashApplication { Lib.current.stage.frameRate = 60; + cacheMouseX = 0; + cacheMouseY = 0; + AudioManager.init (); } @@ -247,8 +252,15 @@ class FlashApplication { } - parent.window.onMouseMove.dispatch (event.stageX, event.stageY); - + var mouseX = event.stageX; + var mouseY = event.stageY; + + parent.window.onMouseMove.dispatch (mouseX, y); + parent.window.onMouseMoveRelative.dispatch (mouseX - cacheMouseX, mouseY - cacheMouseY); + + cacheMouseX = mouseX; + cacheMouseY = mouseY; + case "mouseUp", "middleMouseUp", "rightMouseUp": parent.window.onMouseUp.dispatch (event.stageX, event.stageY, button); diff --git a/lime/_backend/html5/HTML5Window.hx b/lime/_backend/html5/HTML5Window.hx index f5c29160f..354d58cdd 100644 --- a/lime/_backend/html5/HTML5Window.hx +++ b/lime/_backend/html5/HTML5Window.hx @@ -49,10 +49,10 @@ class HTML5Window { public var stats:Dynamic; #end + private var cacheMouseX:Float; + private var cacheMouseY:Float; private var currentTouches = new Map (); private var enableTextEvents:Bool; - private var lastMouseX:Float; - private var lastMouseY:Float; private var parent:Window; private var primaryTouch:Touch; private var setHeight:Int; @@ -70,6 +70,9 @@ class HTML5Window { } + cacheMouseX = 0; + cacheMouseY = 0; + } @@ -343,9 +346,10 @@ class HTML5Window { case "mousemove": - if (x != lastMouseX || y != lastMouseY) { + if (x != cacheMouseX || y != cacheMouseY) { parent.onMouseMove.dispatch (x, y); + parent.onMouseMoveRelative.dispatch (x - cacheMouseX, y - cacheMouseY); } @@ -353,8 +357,8 @@ class HTML5Window { } - lastMouseX = x; - lastMouseY = y; + cacheMouseX = x; + cacheMouseY = y; } else {