【问题标题】:How to determine if the right mouse button is down or not in a MOUSE_MOVE event?如何在 MOUSE_MOVE 事件中确定鼠标右键是否按下?
【发布时间】:2015-05-01 18:27:36
【问题描述】:

对于MOUSE_MOVE 事件,documentation says 有一个buttonDown 属性来指示鼠标左键当前是否按下。但是如何确定右键是否按下?

【问题讨论】:

    标签: actionscript-3 flash


    【解决方案1】:

    没有,但是您可以通过在鼠标右键向下和鼠标右键向上之间设置一个标志来执行此操作。如果您以高优先级监听捕获,它将在所有其他鼠标事件中可用。

    在您的文档类或主时间线框架 1 中,添加以下代码:

    var isRightMouseDown:Boolean = false;
    
    stage.addEventListener(MouseEvent.RIGHT_MOUSE_DOWN, globalMouseDown,true,int.MAX_VALUE)
    function globalMouseDown(e:MouseEvent):void {
        isRightMouseDown = true;
    }
    
    stage.addEventListener(MouseEvent.RIGHT_MOUSE_UP,globalMouseUp,true,int.MAX_VALUE)
    function globalMouseUp(e:MouseEvent):void {
        isRightMouseUp = false;
    }
    

    现在您有了一个可以在鼠标移动侦听器中访问的变量。如果使用时间线代码,请通过 MovieClip(root).isRightMouseDown 在主时间线之外访问它。如果使用文档类,请将其定义为静态 public static var isRightMouseDown:Boolean 并从应用程序中的任何位置访问它:MyMainClassName.isRightMouseDown。 (将 MyMainClassName 替换为您所称的文档类)

    当您添加上面的侦听器时,将第三个参数设置为true,将第四个参数设置为int.MAX_VALUE 将确保在您的应用程序中侦听同一事件的任何其他侦听器之前处理此侦听器。

    有关事件如何工作及其阶段的更多信息,请参阅以下内容: http://www.adobe.com/devnet/actionscript/articles/event_handling_as3.html

    【讨论】:

    • 在 Flash 窗口中按住右键,然后将鼠标移到 Flash 窗口中怎么样?
    • 在这种情况下您无能为力(最初的鼠标右键按下发生在具有焦点的 Flash 之外)- 至少据我所知。
    猜你喜欢
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多