我在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