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

Vernus 18.12.2011 11:30

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

stage.addEventListener(KeyboardEvent.KEY_DOWN, key);
                function key(event:KeyboardEvent):void
                {
 
                        if (String.fromCharCode(event.charCode) == "w")
                        {                               
                                enemy.y += 3;
                                route ='w';                       
                                }
                        if (String.fromCharCode(event.charCode) == "a")
                        {
                                enemy.x += 3;
                                route = 'a';
                                }
                        if (String.fromCharCode(event.charCode) == "s")
                        {
                                enemy.y -= 3;
                                route = 's';
                                }
                        if (String.fromCharCode(event.charCode) == "d")
                        {
                                enemy.x -= 3;
                                route='d';
                                }       
                        }

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

ChuwY 18.12.2011 13:03

Пока плеер не попадет в фокус, он не принимает события клавиатуры.
Так что кликнуть надо.

PainKiller 18.12.2011 21:09

для отслеживания фокуса я обычно в класс документа вставляю такой код:
Код AS3:

private function addListeners(e:Event):void
                {
                        stage.addEventListener(Event.DEACTIVATE, activateWindow);
                        stage.addEventListener(Event.ACTIVATE, removeWindow);
                }
                private function activateWindow(e:Event):void
                {
                        if (! warningWindow)
                        {
                                warningWindow = new WarningDialog ();
                                warningWindow.x = 300;
                                warningWindow.y = 300;
                        }
                        addChild(warningWindow);
                }
                private function removeWindow(e:Event):void
                {
                        removeChild(warningWindow);
                }

warningWindow выводит текст "для продолжения кликните по приложению". Может пригодится :-)


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

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