我正在监听 MOUSE_MOVE 事件。
除非按住鼠标中键,否则发送和接收它们都很好。在释放中间按钮之前,我不会再收到任何 MOUSE_MOVE 事件。
这是 Flash 的问题,还是与我的特定鼠标/计算机配置(Lion 上的蓝牙 Mighty Mouse)有关?
是否有任何已知的解决方法?
这里有一个示例项目来演示这个问题。
左键单击和拖动跟踪鼠标移动事件,但中键单击仅显示鼠标中键按下和鼠标中键弹起。
import flash.events.MouseEvent;
this.stage.addEventListener(MouseEvent.MIDDLE_MOUSE_DOWN, onMiddleMouseDown);
this.stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
function onMiddleMouseDown(e:MouseEvent):void {
trace("middle down");
this.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
this.stage.addEventListener(MouseEvent.MIDDLE_MOUSE_UP, onMiddleMouseUp);
}
function onMouseMove(e:MouseEvent):void {
trace("mouse move");
}
function onMiddleMouseUp(e:MouseEvent):void {
trace("middle up");
this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
this.stage.removeEventListener(MouseEvent.MIDDLE_MOUSE_UP, onMiddleMouseUp);
}
function onMouseDown(e:MouseEvent):void {
trace("down");
this.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
this.stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
}
function onMouseUp(e:MouseEvent):void {
trace("up");
this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
this.stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
}
更新:
当按住中间按钮时,鼠标位置(mouseX 和 mouseY 属性)似乎没有更新。我仍然想知道为什么,或者是否有解决方法。
最佳答案
只是一个猜测,但鼠标中键通常在大多数驱动程序中设置为启用滚动。可能意味着当按下按钮时,窗口会收到某种滚动消息,而不是鼠标移动消息。
关于actionscript-3 - 为什么在按下鼠标中键时不发送 MOUSE_MOVE 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9611797/