actionscript-3 - 每个 MOUSE_DOWN 都保证有一个 MOUSE_UP 吗?

标签 actionscript-3 events drag-and-drop mouse

是否存在 Flash 应用程序可以接收两个 MouseEvent.MOUSE_DOWN 而中间没有 MouseEvent.MOUSE_UP 的情况?

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

最佳答案

  • 单击但不要松开按钮。
  • 在按住按钮的同时将光标移到外面。
  • 松开外面的按钮。
  • 返回内部并再次点击。

你会得到两个没有向上事件的向下事件。

更好的拖放解决方案可能是监听 MOUSE_MOVE 事件并在事件处理程序中检查 buttonDown 属性。如果按钮在移动时按下,则为 true,否则为 false。

编辑:对于阶段,即使您在 Flash 窗口外释放按钮,也会触发 up 事件。所以对于舞台来说这可以工作,但仍然不是使用 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);
    }
}

关于actionscript-3 - 每个 MOUSE_DOWN 都保证有一个 MOUSE_UP 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6697304/

相关文章:

actionscript-3 - AS3 克隆电影剪辑

javascript - 标签更换前的 polymer 纸标签(卸载前)

vb.net - 如何使用最小起订量发起事件?

Silverlight 工具包 TreeView 拖放

actionscript-3 - 获取 ActionScript 中的当前帧。我应该引用什么实例?

ios - 适用于iOS的AS3 AIR-StageVideo无法正常工作

flash.net.URLLoader 从 500 内部服务器错误中获取正文

javascript - Socket.io客户端: respond to all events with one handler?

drag-and-drop - Twitter Bootstrap 模态表单 : How to drag and drop?

c# - 如何在 Winform 中通过拖放将图元文件转换为图像