首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否保证每个MOUSE_DOWN都有MOUSE_UP?

是否保证每个MOUSE_DOWN都有MOUSE_UP?
EN

Stack Overflow用户
提问于 2011-07-15 01:14:55
回答 4查看 347关注 0票数 2

在什么情况下,Flash应用程序可以接收两个MouseEvent.MOUSE_DOWN,而没有中间的MouseEvent.MOUSE_UP

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

EN

回答 4

Stack Overflow用户

发布于 2011-07-15 01:41:21

  • 单击但不松开按钮。
  • 在按住按钮的同时将光标移动到按钮外面。
  • 回到里面并再次单击。

您将获得两个向下事件,而不是向上事件。

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

编辑:对于stage,即使你在flash窗口外释放按钮,up事件也会被激发。所以对于stage,这是可以工作的,但仍然不是计时器,而是使用MOUSE_MOVEbuttonDown在我看来更好。您可以使用以下代码检查自己:

代码语言:javascript
复制
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);
    }
}
票数 5
EN

Stack Overflow用户

发布于 2011-07-15 01:44:27

如果鼠标在舞台之外,它将错过鼠标释放事件,并在鼠标悬停在舞台上时继续鼠标跟踪,因为鼠标释放事件从未被调用。这个可能的问题可以通过使用Event.MOUSE_LEAVE -转发鼠标离开事件到鼠标释放事件处理程序来缓解,这样,如果用户将鼠标从舞台上移开,鼠标释放事件就会被调用。

票数 4
EN

Stack Overflow用户

发布于 2011-07-15 01:18:19

是的,但除非你正在听舞台,否则我认为如果鼠标离开了Flash电影,你可能会错过mouseup事件。然而,没有什么能胜过实验。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6697304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档