Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как проверить нажата ли кнопка мыши? (http://www.flasher.ru/forum/showthread.php?t=168197)

wolhw 18.09.2011 09:28

Как проверить нажата ли кнопка мыши?
 
Сопственно после срабатывания MouseEvent.MOUSE_DOWN нужно проверить нажата ли все еще кнопка и повторять действие с заданым интервалом если нажата(нетрогая причем MouseEvent.MOUSE_OUT/UP) .
???

GBee 18.09.2011 12:14

Цитата:

нетрогая причем MouseEvent.MOUSE_OUT/UP
Чем вас не устраивает то, от чего вы отказываетесь?

goodguy 18.09.2011 13:52

Есть специальный класс Key
Код AS3:

package  {
 
        import flash.display.Stage;
        import flash.display.StageDisplayState;
        import flash.events.Event;
        import flash.events.KeyboardEvent;
        import flash.geom.Rectangle;
 
        public class Key {
 
                private static var initialized:Boolean = false;               
                private static var keysDown:Object = new Object();       
 
                public static function initialize(stage:Stage):void {
                        if (!initialized) {
                                stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
                                stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased);
                                stage.addEventListener(Event.DEACTIVATE, clearKeys);
                                initialized = true;
                        }
                }
 
                public static function isDown(keyCode:uint):Boolean {
                        if (!initialized) {
                                throw new Error("Key class has yet been initialized.");
                        }
                        return Boolean(keyCode in keysDown);
                }
                private static function keyPressed(event:KeyboardEvent):void {
                        keysDown[event.keyCode] = true;
                }
                private static function keyReleased(event:KeyboardEvent):void {
                        if (event.keyCode in keysDown) {
                                delete keysDown[event.keyCode];
                        }
                }
                private static function clearKeys(event:Event):void {
                        keysDown = new Object();
                }
        }
}

Инициализируем, передав в конструкторе stage
Код AS3:

Key.initialize(stage);

после в любое время проверяем нажата ли какая-нибудь клавиша:
Код AS3:

if (Key.isDown(Keyboard.SPACE)) {
    trace("нажат пробел");
}


kackbip 18.09.2011 16:59

Кажется все таки о мышке речь была.

dimarik 18.09.2011 17:51

kackbip, ну выходные же все-таки )

goodguy 18.09.2011 18:24

Цитата:

kackbip, ну выходные же все-таки )
Точно :D Загон зашел, что о клавиатуре )
Мозг в нирване

п.с. Ну по тому же принципу можно и мышь проверять. Так же создать статический класс и ставить при нажатии какую-то переменную true, при отпускании false

Код AS3:

package  {
 
        import flash.display.Stage;
        import flash.events.MouseEvent;
 
        public class MouseButton {
 
                private static var initialized:Boolean = false;               
                private static var mouseDown:Boolean = false;       
 
                public static function initialize(stage:Stage):void {
                        if (!initialized) {
                                stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
                                stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
                                initialized = true;
                        }
                }
 
                public static function isDown():Boolean {
                        if (!initialized) {
                                throw new Error("MouseButton class has yet been initialized.");
                        }
                        return mouseDown;
                }
                private static function onMouseDown(event:MouseEvent):void {
                        mouseDown = true;
                }
                private static function onMouseUp(event:MouseEvent):void {
                        mouseDown = false;
                }
        }
}


dimarik 18.09.2011 18:45

has not yet been initialized [x]

goodguy 18.09.2011 18:48

has not been initialized yet =)
если уж быть точнее )
Но эту строчку писал не я

wolhw 18.09.2011 19:26

Цитата:

Сообщение от GBee (Сообщение 1032254)
Чем вас не устраивает то, от чего вы отказываетесь?

хотелось предвидеть возможность таскать курсор с зажатой клавишей по разным мувикам...

goodguy спасибо за примеры, пригодитса.

И есче вопрос касающийся мыши-- можно ли каким то способом задать MouseX/Y тоисть двигать курсор мышки програмно?

dimarik 18.09.2011 20:12

"has not yet been initialized" - Результатов: примерно 455 000
"has not been initialized yet" - Результатов: примерно 127 000

Добавлено через 2 минуты
Цитата:

Сообщение от wolhw (Сообщение 1032339)
И есче вопрос касающийся мыши-- можно ли каким то способом задать MouseX/Y тоисть двигать курсор мышки програмно?

Еще, каким-то, то есть, программно.

Нет, нельзя.

goodguy 18.09.2011 20:27

Цитата:

"has not yet been initialized" - Результатов: примерно 455 000
"has not been initialized yet" - Результатов: примерно 127 000
Это ни о чем не говорит. Точнее говорит о том, что люди чихали на правила, и говорят так как им кажется лучше =)
Фактически, можно и так и так, но если придерживаться правильного варианта, то yet, в данном случае должно быть в конце предложения.

ЗлОй ПрОграММер 18.09.2011 20:54

Цитата:

И есче вопрос касающийся мыши-- можно ли каким то способом задать MouseX/Y тоисть двигать курсор мышки програмно?
можно скрыть стандартный курсор, вместо него подставить картинку и уже с ней оперировать =)

wolhw 18.09.2011 21:43

Цитата:

Сообщение от ЗлОй ПрОграММер (Сообщение 1032360)
можно скрыть стандартный курсор, вместо него подставить картинку и уже с ней оперировать =)

собственно так и делаю,
спасибо за ответы


Часовой пояс GMT +4, время: 17:12.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.