我一直在使用MovieClip创建一个按钮。我正在使用以下活动:
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事件。
我该如何解决这个问题? 谢谢, Y_Y。
答案 0 :(得分:2)
在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
处理程序中缓存对目标按钮的引用,并且您仍然需要知道按下了哪个按钮(假设您的处理程序超出了按钮本身的范围) )。