Форум 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=130487)

incvizitor 27.09.2009 16:39

узнать нажата ли кнопка
 
Как сделать что-то типа этого:

Код AS3:

addEventListener(Event.ENTER_FRAME,func);
 
function func(e:Event){
if(leftKeyPressed)
obj.x--;
}

где leftKeyPressed обозначает нажата ли левая стрелка. То есть как это узнать...

VVall 27.09.2009 16:50

Добавить обработчики KEY_DOWN и KEY_UP, в них устанавливать и сбрасывать флаги нажатия нужных клавиш, в программе проверять эти флаги.

KaBELSEA 27.09.2009 17:03

Код AS3:

addEventListener(KeyboardEvent.KEY_DOWN, key_pressed);
addEventListener(KeyboardEvent.KEY_UP, key_released);
addEventListener(Event.ENTER_FRAME,func);
 
        private function key_pressed(e:KeyboardEvent):void {
            switch (e.keyCode) {
                case Keyboard.LEFT :
                        isLeft = true;
                    break;
                case Keyboard.RIGHT :
                        isRight = true;
            }
        } // key_pressed()
 
        private function key_released(e:KeyboardEvent):void {
            switch (e.keyCode) {
                case Keyboard.LEFT :
                        isLeft = false;
                    break;
                case Keyboard.RIGHT :
                        isRight = false;
                    break;
            }
        } // key_released()
 
        function func(e:Event)
        {
              if(isLeft)
                    obj.x--;
        } // func()

типа так )

incvizitor 27.09.2009 17:28

а нельзя на прямую узнать нажата ли кнопка клавы или например мышки? + как же тогда быть с комбинациями, это что каждый раз изменять лог переменные?

VVall 27.09.2009 17:33

Напрямую нельзя. Да, изменять каждый раз. Если вам нужно опрашивать все клавиши, то можно завести просто массив флагов, тогда будет всего по одной строке кода в обработчиках нажатия и отпускания клавиш, а в программе проверять нажатие будете примерно так: if(array[Keyboard.RIGHT]) ..

incvizitor 27.09.2009 17:36

Понятно... Жаль конечно но что же поделаешь... Спасибо всем кто отвечал)


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

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