我正在开发一个使用A,HTML5画布的Web游戏应用程序,该应用程序必须对“单击”事件做出反应(总的来说)。

在移动平台(或触摸能力)上,这意味着在台式机/笔记本电脑平台(带鼠标或垫子)上对OnTouchDown做出反应,这意味着对OnMousedown做出反应。

问题是,如果我处理这两个事件,则有时相同的“点击”会导致两个事件都被触发,因此我会得到双重信号。

最好的处理方法是什么?

当前,在我收到的第一个触摸事件中,我关闭鼠标事件,但是如果平台支持触摸和鼠标咔嗒声,那可能会有些沉重(fi android平板电脑,带有键盘/pad/鼠标)

测量触摸和点击之间的延迟以忽略触摸后的单击不太好,因为在某些情况下,用户可能会在高频下触摸/单击,因此太长的延迟导致丢弃双龙头/点击,并且太短的延迟使偶尔的双信号传递滑动。

我研究了用户代理检测,但这似乎很脆弱(那里的许多用户代理),并且无法解该平台具有触摸和鼠标/pad的情况。

有帮助吗?

解决方案

也许您的建议结合在一起:

测量触摸和点击之间的延迟以忽略触摸后的单击不太好,因为在某些情况下,用户可能会在高频下触摸/单击,因此太长的延迟导致丢弃双龙头/点击,并且太短的延迟使偶尔的双人信号通过滑倒

并检测到水龙头的X,y坐标会减少误报。因此,如果两个事件(点击&单击)的顺序都具有相同的坐标,则它们的处理方式相同。

或者,如果用户想使用鼠标或触摸两者,请让用户切换(通过某种选项屏幕)。例如显示警告消息 you're on a touch device so we enabled touch events, if you're using a mouse please see options 或类似的东西。

大多数用户会对自动选择感到满意,每个人都不开心地可以改变它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top