【问题标题】: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 或更大的增量。我的一只鼠标在滚动时会产生较小的增量,并且该事件永远不会被触发。这是一个问题在调试工具和浏览器中。
  • 您的应用程序在什么上下文中运行?网络?移动的?桌面?

标签: flash actionscript-3 flash-builder


【解决方案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/

【讨论】:

【解决方案4】:

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

【讨论】:

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