【问题标题】:Click after mouse up outside stage鼠标移到舞台外后点击
【发布时间】:2015-10-13 09:04:43
【问题描述】:

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

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

更新:项目中有拖拽后第一次点击的消音器。有必要消除某些游戏对象(dispath click)上的末端拖动情况。对不起。谢谢大家的解答。

【问题讨论】:

    标签: actionscript-3 flash


    【解决方案1】:

    离开舞台时,您可能会失去注意力。尝试使用(Event.MOUSE_LEAVE) 来“强制”鼠标向上。

    【讨论】:

    • 你的意思是将鼠标向上事件发送到鼠标离开处理程序?
    • 是的。恐怕我必须调查它以提供更多信息,但类似的事情。
    【解决方案2】:

    类似这样的:

    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();
    }
    

    更新: 关于失去焦点,您可以在嵌入 Flash 的 html 中执行以下操作:

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

    虽然我没有测试过。

    【讨论】:

    • 感谢您的代码。已经实施了。鼠标移到舞台外后第一次点击不能解决问题。
    • 您可能应该将焦点返回到您的 html 页面上的 Flash 电影。像这样:helpx.adobe.com/flash/kb/…。所以在 javascript 中你可以监听 mouseover 事件(当鼠标悬停在你的 flash 电影容器上时)并手动设置焦点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    相关资源
    最近更新 更多