我正在侦听MOUSE_MOVE事件。
除非按住鼠标中键,否则它们会被发送和接收。在中间按钮被释放之前,我不再获得MOUSE_MOVE事件。
这是Flash的问题,还是与我的特定鼠标/电脑配置有关(狮子座上的蓝牙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属性)。我仍然想知道为什么,或者是否有解决方法。
答案 0 :(得分:0)
只是一个猜测,但通常在大多数驱动程序中设置鼠标中键以启用滚动。可能意味着当按下按钮时,窗口会取代鼠标移动消息而不会显示某种滚动消息。
答案 1 :(得分:0)
你绝对需要MOUSE_MOVE活动吗?大多数情况下,ENTER_FRAME事件可以很好地替换它。
addEventListener(Event.ENTER_FRAME, eFrame);
private function eFrame(event:Event):void
{
trace(mouseX,mouseY);
}
答案 2 :(得分:0)
看起来这是Flash Player for Mac中的一个错误
Adobe修复了它:
https://bugbase.adobe.com/index.cfm?event=bug&id=3674152