e.keyCode == Keyboard.ESCAPE не работает - PullRequest
3 голосов
/ 09 апреля 2011

Я создаю флэш-игру, в которой, когда пользователи выбирают здание, которое он / она желает построить, но позже передумает, он / она может нажать «ESC» на своей клавиатуре, чтобы здание не было выбрано - пользователи не будутвынужден строить, как только он / она выбирает здание.Я попытался назначить клавишу ESCAPE, но она не сработала.он работает нормально, если я назначу ему пробел, левую, правую клавишу и т. д., но это не имеет смысла, что пользователи должны нажимать эти клавиши.ESCAPE ключ должен быть идеальным.Вот мой код:

import flash.events.KeyboardEvent;

stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
function myKeyDown(e:KeyboardEvent):void {
    if (e.keyCode==Keyboard.ESCAPE) {
        trace(e.keyCode);
        constructionButtonUnselected();
    }
}

Кто-нибудь знает, что мешает системе распознавать клавишу ESCAPE?

Ответы [ 3 ]

4 голосов
/ 10 апреля 2011

Клавиша escape работает, когда SWF-файл работает в браузере или автономно, но когда вы запускаете контент в Flash CS4 или Flash CS5, среда IDE перехватывает клавишу Escape и не передает ее проигрывателю. То же самое происходит с клавишами F # и несколькими другими.

Если вы хотите использовать клавишу Escape, вы можете, но вам понадобится другой ключ, определенный для использования в качестве резервной копии при работе в IDE.

4 голосов
/ 10 мая 2011

На самом деле, когда вы компилируете SWF в среде IDE, перейдите в «Управление» -> «Отключить сочетания клавиш», это позволит вам захватить KeyboardEvent клавиши Escape вместо того, чтобы среда IDE захватила его преждевременно.

1 голос
/ 09 апреля 2011

я пробовал следующий код:

package{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;


public class Esc extends Sprite{
    public function Esc(){
        addEventListener( Event.ADDED_TO_STAGE, onStage );

    }

    private function onStage( e:Event ):void {
        removeEventListener( e.type, onStage );
        stage.addEventListener( KeyboardEvent.KEY_DOWN, keyDown );

    }

    private function keyDown( e:KeyboardEvent ):void {

        out.text =  String( e.keyCode );
        out.text += ( "\n"+String( e.charCode ) );

        if  ( e.keyCode == Keyboard.ESCAPE ) {
            out.text = "Escape!";
        }
    }
}

}

out - текстовое поле на сцене.

я мог видеть "Побег!"

Пока я кодировал во flashCS4, скомпилировал и попробовал, FlashPlayer не стал фокусом клавиатуры. После открытия SWF в моем браузере это сработало и вывело меня на экран. Но я знаю, что клавиша ESC имеет некоторые ограничения, просто потому, что это клавиша по умолчанию для выхода из полноэкранного режима, и я думаю, что если вы находитесь в полноэкранном режиме, нет никакого способа получить это специальное событие клавиатуры. Возможно, если в параметрах включено «allowfullscreen», это событие больше не находится под вашим контролем.

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