即使与actionscript 3.0失焦,我如何获得按钮?

时间:2010-07-30 20:41:11

标签: 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,OnMouseDown);
 this.addEventListener(MouseEvent.MOUSE_UP,OnMouseUp);

一切正常,除了当我点击按钮和[不释放鼠标按钮]时,我将鼠标拖出按钮的焦点,然后释放鼠标按钮,不调用OnMouseUp事件。

我该如何解决这个问题? 谢谢, Y_Y。

1 个答案:

答案 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处理程序中缓存对目标按钮的引用,并且您仍然需要知道按下了哪个按钮(假设您的处理程序超出了按钮本身的范围) )。