Actionscript 3 鼠标在舞台外点击

Actionscript 3 鼠标在舞台外点击,actionscript-3,flash,Actionscript 3,Flash,我是Flash项目中的拖动游戏场景(鼠标向下-开始拖动,鼠标向上-停止拖动)。若我将鼠标移到舞台外,点击任何对象(按钮)一次都不起作用。单击一次后,其他单击可以正常工作。怎么了 更新:跟踪日志显示,有mouseOver、mouseDown、mouseUp、mouseOut等事件是调度,但没有单击 更新:项目中存在拖动后第一次单击的消音器。有必要消除某些游戏对象(dispath click)上的结束拖拽情况。很抱歉谢谢大家的回答。离开舞台时,你可能会失去注意力。尝试使用(Event.MOUSE\u

我是Flash项目中的拖动游戏场景(鼠标向下-开始拖动,鼠标向上-停止拖动)。若我将鼠标移到舞台外,点击任何对象(按钮)一次都不起作用。单击一次后,其他单击可以正常工作。怎么了

更新:跟踪日志显示,有mouseOver、mouseDown、mouseUp、mouseOut等事件是调度,但没有单击


更新:项目中存在拖动后第一次单击的消音器。有必要消除某些游戏对象(dispath click)上的结束拖拽情况。很抱歉谢谢大家的回答。

离开舞台时,你可能会失去注意力。尝试使用
(Event.MOUSE\u LEAVE)
将鼠标“强制”向上移动。

类似以下内容:

private var _draggedItem:Sprite;

myDisplayObject.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);

private function mouseDownHandler(event:MouseEvent):void {
    _draggedItem = event.currentTarget as Sprite;
    _draggedItem.startDrag();
    _draggedItem.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
    stage.addEventListener(Event.MOUSE_LEAVE, stageMouseOutHandler);
}

private function stopDragCurrentItem():void {
    if (_draggedItem) {
        _draggedItem.stopDrag();
        _draggedItem.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
        if (stage) {
            stage.removeEventListener(Event.MOUSE_LEAVE, stageMouseOutHandler);
        }
        _draggedItem = null;
    }
}

private function mouseUpHandler(event:MouseEvent):void {
    stopDragCurrentItem();
}

private function stageMouseOutHandler(event:Event):void {
    trace("stage out!")
    stopDragCurrentItem();
}
更新: 关于失去焦点,您可以在html中嵌入flash的地方执行以下操作:

 <object classid="..." codebase="...." width=550 height=400 
         name="myMovie" onmouseover="window.document.myMovie.focus();">


虽然我还没有测试过。

b你是说将鼠标上升事件分派到鼠标离开处理程序中?是的。恐怕我得调查一下才能提供更多的信息,但是类似的东西。谢谢你的代码。它已经实现了。这并不能解决在舞台外使用鼠标后第一次单击的问题。您可能应该将焦点返回到html页面上的flash电影。类似这样的内容:。所以在javascript中,您可以监听mouseover事件(当鼠标在flash电影容器上时),并手动设置焦点。