MOUSE_WHEEL 在触发之前是不是有最小增量值?

Posted

技术标签:

【中文标题】MOUSE_WHEEL 在触发之前是不是有最小增量值?【英文标题】:Does MOUSE_WHEEL have a min delta value before it fires?MOUSE_WHEEL 在触发之前是否有最小增量值? 【发布时间】:2011-09-08 14:06:40 【问题描述】:

我在使用 MOUSE_WHEEL 增量值时遇到了一些问题。除非我真的转动阻尼轮,否则该事件似乎不会触发。这是有道理的,因为我得到的唯一值范围是 3-30。我也希望能赶上 1-3,因为如果我只是旋转几个档次,什么都不会触发,并且应用程序会感觉迟缓。

仅供参考,我机器上的所有其他程序都感觉那些 1 档旋转很好,所以不是鼠标。如果 delta 小于 3,AS3 不会触发吗?

这里是代码

private function handleMouseWheel(e:MouseEvent):void 
trace(e.delta); 
    // Output is always more/less than +/- 3 


private function handleStageInit(e:Event):void 
    stage.addEventListener(MouseEvent.MOUSE_WHEEL, handleMouseWheel);

【问题讨论】:

我遇到了同样的问题。我有多只老鼠。我可以使用一个,并且 flash 可以很好地拾取滚动事件(它始终显示 +/- 3 或更大的增量。我的一只鼠标在滚动时会产生较小的增量,并且该事件永远不会被触发。这是一个问题在调试工具和浏览器中。 您的应用程序在什么上下文中运行?网络?移动的?桌面? 【参考方案1】:

您的代码或设备有问题,请查看this示例(您可以右键查看代码)。它在我的机器上运行良好。

【讨论】:

滚动时看到的增量范围是多少? 因此,如果您缓慢向上滚动、快速向上滚动、缓慢向下滚动或快速向下滚动,您只能得到 1 的增量?看来你有问题了。 @Boundless 不,当我快速滚动时,我得到 1-3 个增量,而当我滚动 slaw 时,只有一个。伙计,它对我来说真的很好用,也可以在其他设备上试试【参考方案2】:

AS3 只触发 +3(向上滚动)和 -3(向下滚动),但我们可以通过除以一些常数来计算我们的需求。

import flash.events.MouseEvent;

stage.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);

function mouseWheelHandler(ev)
    trace(ev.delta/3); // +1 or -1
    trace(ev.delta/6); // +.5 or -.5

【讨论】:

这甚至没有任何意义。 -1 问题是,在调试中,事件处理程序不会因为小于 +/- 3 的 delta 而被触发。在浏览器中,小于 +/- 3 的 delta 会被转换为 0。 【参考方案3】:

AS3 没有任何可自定义的车轮灵敏度值。

我相信它的工作方式取决于物理鼠标操作系统设置

例如,在 windows 中,您可以在 ControlPanel -> Mouse 中设置各种鼠标设置的灵敏度。 在***选项卡中,用户可以设置***对每个物理槽口的行数(例如增量)。默认值为 3。

同时,每个物理鼠标都有不同的陷波灵敏度,例如。您需要移动它多少才能在操作系统中注册一个“缺口”。

我相信 swf 的容器也有一些影响,因此它在不同的浏览器中、作为投影仪以及在您的 IDE 中的行为可能会有所不同。

对于浏览器,大多数人似乎绕过了 flash 并将 javascript 滚轮事件监听/传递到 flash:

查看这些库:

https://github.com/digi604/As3-Mouse-Wheel-Fixer

http://labs.byhook.com/2010/04/09/flash-mouse-wheel-support/

【讨论】:

@Jason - 这可能是一本好书:labs.byhook.com/2010/04/09/flash-mouse-wheel-support @Boundless - 我同意这是我在过去遇到过的 Flash 中的一个巨大烦恼,而且要让它正常工作,你必须使用 JavaScript 是愚蠢的【参考方案4】:

According to ilike2Flash delta 的变化可能取决于用户的鼠标。

【讨论】:

那为什么其他程序会注意到呢?我知道增量的实际值可能会因用户而异(它是操作系统设置)。但是,谈到物理鼠标,我可以在任何其他程序(包括 Chrome)中滚动并注册。但 AS3 似乎只注意到我是否真的在转动方向盘。抛开价值不谈,除非我真的旋转该死的***,否则事件甚至不会触发。 我不知道。 documentation for MouseEvent.delta 表示“典型值为 1 到 3,但更快的旋转可能会产生更大的值。此设置取决于设备和操作系统,通常可由用户配置。”同一页面上没有任何 JavaScript 可以拦截鼠标滚轮事件吗?

以上是关于MOUSE_WHEEL 在触发之前是不是有最小增量值?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 死锁与复合主键和触发自动增量

爬虫篇 ---增量式爬虫

如何通过最小增量(或接近它)改变浮点数?

在 phpMyadmin 中重新设置表的自动增量的触发器

flume增量采集数据

如何在没有触发器和手动插入的情况下在 mysql 中生成/自动增量 guid?