鼠标在舞台外点击后点击

时间:2015-10-13 09:04:44

标签: actionscript-3 flash

我在Flash项目中拖动游戏场景(鼠标按下 - 开始拖动,鼠标向上 - 停止拖动)。如果我在舞台外面鼠标,点击任何对象(按钮)不能工作一次。点击一下,其他点击工作正常。怎么了?

更新:跟踪日志显示事件为mouseOver,mouseDown,mouseUp,mouseOut是调度,但不是CLICK。

更新:在项目中拖动后第一次点击的消音器。消除某些游戏对象上的结束拖拽情况(发送点击)是必要的。抱歉。谢谢大家的答案。

2 个答案:

答案 0 :(得分:1)

离开舞台时你可能会失去焦点。尝试使用(Event.MOUSE_LEAVE)来“强制”使用mouse_up。

答案 1 :(得分:1)

类似的东西:

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中做了以下的事情:

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

虽然我没有测试过它。