0

我正在开发一个带有 HTML5 画布的网络游戏应用程序,该画布必须对“点击”事件做出反应(一般意义上)。

在移动平台(或支持触控的)上,这意味着对 onTouchDown 做出反应,在台式机/笔记本电脑平台上(使用鼠标或垫),这意味着对 onMouseDown 做出反应。

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

处理这个问题的最佳方法是什么?

目前,在我收到第一个触摸事件时,我会关闭鼠标事件,但如果平台同时支持触摸和鼠标点击,这可能会有点笨拙(例如带有附加键盘/键盘/鼠标的 Android 平板电脑)

测量触摸和单击之间的延迟以在触摸后忽略单击效果不太好,因为在某些情况下用户可能会高频触摸/单击,因此延迟过长会导致双击/单击丢失,并且太短的延迟会让偶尔的双重信号通过。

我看过用户代理检测,但这似乎很脆弱(那里有很多用户代理),并且不能解决平台同时具有触摸和鼠标/垫的情况。

4

1 回答 1

1

也许是您的建议的组合:

测量触摸和单击之间的延迟以在触摸后忽略单击效果不太好,因为在某些情况下用户可能会高频触摸/单击,因此延迟过长会导致双击/单击丢失,并且太短的延迟让偶尔的双重信号通过

并且检测水龙头的 x,y 坐标会减少误报。因此,如果按顺序发生的两个事件(点击和单击)获得相同的坐标,则它们的处理方式相同。

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

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

于 2012-01-10T07:52:57.830 回答