每个MOUSE_DOWN都保证MOUSE_UP吗?

Tim*_*Tim 2 mouse events drag-and-drop actionscript-3

在任何情况下Flash应用程序都可以在MouseEvent.MOUSE_DOWN没有MouseEvent.MOUSE_UP介于两者之间的情况下收到两个吗?

在我的ActionScript 3应用程序中,我想跟踪用户拖动精灵.我的计划是监听a MouseEvent.MOUSE_DOWN,启动一个无限期重复的计时器,记录鼠标位置,然后停止计时器MouseEvent.MOUSE_UP.这是一个好计划吗?

tas*_*oor 5

  • 单击但不释放按钮.
  • 按住按钮的同时将光标移到外面.
  • 释放外面的按钮.
  • 回到里面然后再次点击.

没有一个up事件,你将得到两个下来的事件.

拖放的更好解决方案可能是监听MOUSE_MOVE事件和事件处理程序检查buttonDown属性.如果按钮在移动时关闭,则为真,否则为假.

编辑:对于舞台,即使您在闪光窗口外释放按钮,也会触发向上事件.因此,对于这个阶段可以工作,但仍然不是定时器的使用MOUSE_MOVEbuttonDown比较好看我.您可以使用以下代码进行检查:

public class StageEventTest extends Sprite
{
    public function StageEventTest()
    {
        stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
        stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
        stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
    }

    private function onDown(evt:MouseEvent):void {
        trace("down");
    }

    private function onUp(evt:MouseEvent):void {
        trace("up");
    }

    private function onMove(evt:MouseEvent):void {
        trace("move", evt.buttonDown);
    }
}
Run Code Online (Sandbox Code Playgroud)