Как мне узнать, нажата ли кнопка мыши? - PullRequest
0 голосов
/ 06 ноября 2011

Можно ли в любой момент узнать, нажата ли кнопка мыши?

У меня есть некоторый код, который запускается, когда кнопка мыши нажата, но если я переключаюсь с Flash-клиента, когда кнопка мыши нажата, то слушатели мыши вверх не вызывают ситуацию, проверив, нажата ли кнопка мыши.

В идеале я бы хотел что-то вроде:

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

Ответы [ 2 ]

3 голосов
/ 06 ноября 2011

вам необходимо проверить свойство 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();
        }       
    }   
}

результат - я нажимаю кнопку, перемещаю указатель за пределы firefox, отпускаю кнопку, нажимаю на другое окно приложения, затем снова нажимаю alt-tab на firefox и перемещаю мышь; в этот момент мой SWF распознает, что кнопка мыши отпущена

upd 2
он работает как предполагается в Firefox 3.6.10 и как описано в вопросе в Firefox 7.0.1

2 голосов
/ 06 ноября 2011

Я закончил тем, что добавил Event.ACTIVATE слушателя.Всякий раз, когда Flash получает фокус, я проверяю, считается ли кнопка мыши нажатой.Поскольку кнопка мыши не может быть нажата внутри клиента Flash * до , когда клиент Flash получает фокус, я могу смело предположить, что он должен быть включен, и вызвать соответствующий код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...