我在Flash项目中拖动游戏场景(鼠标向下 - 开始拖动,鼠标向上 - 停止拖动)。如果我将鼠标悬停在舞台外面,点击任何物体(按钮)都不会工作一次。点击一下其他点击就可以正常工作。怎么了?点击鼠标后在舞台外
更新:跟踪日志显示有事件为mouseOver,mouseDown,mouseUp,mouseOut是调度,但不是CLICK。
更新:在项目中拖动后有第一次点击的消声器。有必要消除某些游戏对象的末端拖动情况(拖动点击)。抱歉。谢谢大家的回答。
我在Flash项目中拖动游戏场景(鼠标向下 - 开始拖动,鼠标向上 - 停止拖动)。如果我将鼠标悬停在舞台外面,点击任何物体(按钮)都不会工作一次。点击一下其他点击就可以正常工作。怎么了?点击鼠标后在舞台外
更新:跟踪日志显示有事件为mouseOver,mouseDown,mouseUp,mouseOut是调度,但不是CLICK。
更新:在项目中拖动后有第一次点击的消声器。有必要消除某些游戏对象的末端拖动情况(拖动点击)。抱歉。谢谢大家的回答。
离开舞台时您可能会失去焦点。尝试使用(Event.MOUSE_LEAVE)
'强制'mouse_up。
是这样的:
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();">
虽然我的天堂”对它进行测试。
感谢您的代码。它已经实施。它不会解决问题,在鼠标移出舞台后首次点击。 – Vovanok
你应该将焦点返回到你的html页面上的flash电影。像这样:https://helpx.adobe.com/flash/kb/give-keyboard-focus-embedded-movie.html。所以在JavaScript中你可以听到鼠标悬停事件(当鼠标悬停在你的Flash电影容器上)并手动设置焦点。 – leetwinski
你是说将鼠标事件分派给鼠标离开处理程序? – Vovanok
是的。恐怕我不得不查看它以提供更多信息,但类似的东西。 – stain88