ActionScript 3 KeyboardEvent не запускается - PullRequest
1 голос
/ 04 ноября 2010

Я новичок в разработке ActionScript и использую IDE FlashDevelop. Я играл с некоторыми действительно упрощенными вещами и столкнулся с проблемой, которую не могу решить.

Мое приложение компилируется и запускается, и функция, которая отслеживает события нажатия, срабатывает отлично, и я вижу событие в консоли, когда передаю его в trace (), но тот же код, наблюдающий за KeyboardEvent, вообще не срабатывает.

Вот мой код:

package GameTesting
{

    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;

    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.events.KeyboardEvent;

    [Frame(factoryClass="GameTesting.Preloader")]
    public class Main extends Sprite
    {

        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);

            addEventListener(MouseEvent.CLICK, onClickEvent);
            addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent);
        }

        private function onKeyDownEvent(e:KeyboardEvent):void
        {
            trace(e);
        }

        private function onClickEvent(e:MouseEvent):void
        {
            trace(e);
        }

    }

}

MouseEvent trace () срабатывает каждый раз, как и ожидалось, но KeyboardEvent никогда не срабатывает, независимо от того, какую клавишу я нажимаю. Есть идеи?

Ответы [ 3 ]

6 голосов
/ 04 ноября 2010

Вам необходимо добавить слушателей на сцену:

private function init(e:Event = null):void
{
    removeEventListener(Event.ADDED_TO_STAGE,init);

    stage.addEventListener(MouseEvent.CLICK, onClickEvent);
    stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent);
}
3 голосов
/ 25 сентября 2012

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

Вот хорошая статья, объясняющая это в дальнейшемподробно: События клавиатуры на сцене не работают ...?

1 голос
/ 05 ноября 2010

Если вы находитесь в Flash IDE (по крайней мере для CS4), вам также потребуется отключить сочетания клавиш при отладке (Ctrl + Shift + Enter) или при тестировании (Ctrl + Enter) флага.

В окне фильма выберите «Управление» -> «Отключить сочетания клавиш». Это остановит Flash IDE, получающий ввод с клавиатуры, и разрешит вместо этого окно отладки / тестирования.

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