如何确定鼠标按钮是否已关闭?

时间:2011-11-06 02:15:44

标签: actionscript-3 actionscript

如果鼠标按钮关闭,有没有办法随时查找?

我有一些代码在鼠标按钮关闭时运行,但是如果我在鼠标按钮关闭的情况下从Flash客户端切换,那么鼠标向上的监听器永远不会被调用,所以我想要帐户通过检查鼠标按钮是否仍然按下来解决这种情况。

理想情况下,我喜欢以下内容:

if (Mouse.isDown) {
    trace("down");
} else {
    trace("up");
}

2 个答案:

答案 0 :(得分:3)

你需要检查MouseEvent::buttonDown处理程序中的MouseEvent.MOUSE_MOVE属性来切换一些Boolean标志
UPD
代码:

package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent; 
    /**
     * ...
     * @author www0z0k
     */
    [SWF (width="320", height="240", frameRate="24")]
    public class Main extends Sprite {
        private var _isDown:Boolean = false;
        public function Main():void {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            color = 0;
            stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
        }

        private function onMove(e:MouseEvent):void {
            color = e.buttonDown ? 0xffff00 : 0x0000ff;
        }

        public function set color(value:int):void {
            graphics.clear();
            graphics.beginFill(value);
            graphics.drawRect(0, 0, 320, 240);
            graphics.endFill();
        }       
    }   
}

result - 我按下按钮,将指针移到firefox外面,释放按钮,单击其他应用程序窗口,然后按alt-tab返回firefox并移动鼠标;此时我的swf识别出鼠标按钮被释放

更新2
它的工作方式与firefox 3.6.10一样,并且如firefox 7.0.1中的问题所述

答案 1 :(得分:2)

我最后添加了一个Event.ACTIVATE监听器。每当Flash获得焦点时,我都会检查鼠标按钮是否被认为是关闭的。由于在 Flash客户端获得焦点之前鼠标按钮无法在Flash客户端内部关闭,因此我可以放心地认为它应该启动并调用相应的代码。