From 6c0f286b463a2f1884d59265fe1dc19671349a20 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Tue, 31 Dec 2019 11:44:01 +0800 Subject: [PATCH] onup loc --- API列表.txt | 7 ++++--- libs/actions.js | 6 ++++-- main.js | 11 ++++++++--- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/API列表.txt b/API列表.txt index 4bbd2864..71fa3a6b 100644 --- a/API列表.txt +++ b/API列表.txt @@ -230,9 +230,10 @@ core.onmove(loc) 注册的onmove交互函数需要接受x, y, px, py四个参数,代表当前的的位置和像素坐标。 -core.onup() -当从屏幕上离开时的操作。请注意此函数是没有参数的。 +core.onup(loc) +当从屏幕上离开时的操作。loc为当前的坐标信息。 请勿直接覆盖或调用此函数,如有需要请注册一个"onup"的交互函数。 +注册的onup交互函数需要接受x, y, px, py四个参数,代表当前的的位置和像素坐标。 core.onclick(x, y) @@ -253,7 +254,7 @@ core.keyDownCtrl() core.longClick() 当长按住屏幕时执行的操作。 -请勿直接覆盖或调用此函数,如有需要请注册一个"keyDownCtrl"的交互函数。 +请勿直接覆盖或调用此函数,如有需要请注册一个"longClick"的交互函数。 注册的交互函数如果某一项返回true,则之后仍然会继续触发该长按, 如果全部返回false则将停止本次长按行为,直到手指离开屏幕并重新进行长按为止。 ``` diff --git a/libs/actions.js b/libs/actions.js index 8af36328..8ecc7460 100644 --- a/libs/actions.js +++ b/libs/actions.js @@ -535,8 +535,10 @@ actions.prototype._sys_onmove = function (x, y) { } ////// 当点击(触摸)事件放开时 ////// -actions.prototype.onup = function () { - this.doRegisteredAction('onup'); +actions.prototype.onup = function (loc) { + var x = parseInt(loc.x / loc.size), y = parseInt(loc.y / loc.size); + var px = parseInt(loc.x / core.domStyle.scale), py = parseInt(loc.y / core.domStyle.scale); + this.doRegisteredAction('onup', x, y, px, py); } actions.prototype._sys_onup_paint = function () { diff --git a/main.js b/main.js index c9e9f506..f8dfbea4 100644 --- a/main.js +++ b/main.js @@ -464,9 +464,12 @@ main.dom.data.onmousemove = function (e) { } ////// 鼠标放开时 ////// -main.dom.data.onmouseup = function () { +main.dom.data.onmouseup = function (e) { try { - main.core.onup(); + e.stopPropagation(); + var loc = main.core.actions._getClickLoc(e.clientX, e.clientY); + if (loc == null) return; + main.core.onup(loc); }catch (e) { main.log(e); } } @@ -504,7 +507,9 @@ main.dom.data.ontouchmove = function (e) { main.dom.data.ontouchend = function (e) { try { e.preventDefault(); - main.core.onup(); + var loc = main.core.actions._getClickLoc(e.targetTouches[0].clientX, e.targetTouches[0].clientY); + if (loc == null) return; + main.core.onup(loc); } catch (e) { main.log(e); }