Actionscript 3 在actionscript 3.0中,即使在焦点不集中的情况下,我如何启动按钮?
我一直在用MovieClip制作一个按钮。我正在使用以下事件:Actionscript 3 在actionscript 3.0中,即使在焦点不集中的情况下,我如何启动按钮?,actionscript-3,Actionscript 3,我一直在用MovieClip制作一个按钮。我正在使用以下事件: this.addEventListener(MouseEvent.CLICK,OnClick); this.addEventListener(MouseEvent.ROLL_OVER,OnButtonRollOver); this.addEventListener(MouseEvent.ROLL_OUT,OnButtonRollOut); this.addEventListener(MouseEvent.MOUSE_DOWN
this.addEventListener(MouseEvent.CLICK,OnClick);
this.addEventListener(MouseEvent.ROLL_OVER,OnButtonRollOver);
this.addEventListener(MouseEvent.ROLL_OUT,OnButtonRollOut);
this.addEventListener(MouseEvent.MOUSE_DOWN,OnMouseDown);
this.addEventListener(MouseEvent.MOUSE_UP,OnMouseUp);
除了单击按钮和[不释放鼠标按钮]将鼠标拖出按钮焦点,然后释放鼠标按钮外,一切正常。不会调用OnMouseUp事件
我怎样才能解决这个问题?
谢谢
是。在您的
OnMouseDown
处理程序中,您可以添加以下内容,以确保获得所需的MouseEvent.MOUSE-UP
事件:
private function OnMouseDown(e:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_UP, onStageMouseUp);
}
private function onStageMouseUp(e:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_UP, onStageMouseUp);
// handle mouse up here
}
当然,这意味着您必须做一些额外的工作,以确保适当地添加/删除处理程序。如果您描述的场景发生,您可能还希望在
OnMouseDown
处理程序中缓存对目标按钮的引用,并且您仍然需要知道按下了哪个按钮(假设您的处理程序不在按钮本身的范围内)。在鼠标按下和鼠标上升时是否需要单独的操作?你能用一个或另一个事件来回避这个问题吗?