我在Flash项目中拖动游戏场景(鼠标按下 - 开始拖动,鼠标向上 - 停止拖动)。如果我在舞台外面鼠标,点击任何对象(按钮)不能工作一次。点击一下,其他点击工作正常。怎么了?
更新:跟踪日志显示事件为mouseOver,mouseDown,mouseUp,mouseOut是调度,但不是CLICK。
更新:在项目中拖动后第一次点击的消音器。消除某些游戏对象上的结束拖拽情况(发送点击)是必要的。抱歉。谢谢大家的答案。
答案 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();">
虽然我没有测试过它。