konami кодируют в гибком проводе

Если IE перестал работать с Вашим вторым примером, это - потому что 'Класс' является зарезервированным словом (только в IE). Вообще говоря, всегда лучше включить Ваши имена свойства с кавычками - выполнение, это означает, что будет ВСЕГДА работать, безотносительно обстоятельства.

35
задан animuson 4 May 2014 в 20:38
поделиться

2 ответа

Конечный автомат - это весело писать , но в этом случае я бы выбрал образец подписи. В зависимости от того, где вы хотите разместить обработчик (на этапе компонента), вот некоторый код, который должен работать, хотя вы, вероятно, можете его ужесточить (и, конечно, настроить его для своих конкретных нужд):

// up-up-down-down-left-right-left-right-B-A
public static const KONAMI_CODE:String = "UUDDLRLRBA";

// signature
private var signatureKeySequence:String = "";

private function onKeyDown(event:KeyboardEvent):void {
    var keyCode:int = event.keyCode;

    switch (keyCode) {
        case Keyboard.UP:
            signatureKeySequence += "U";
            break;

        case Keyboard.DOWN:
            signatureKeySequence += "D";
            break;

        case Keyboard.LEFT:
            signatureKeySequence += "L";
            break;

        case Keyboard.RIGHT:
            signatureKeySequence += "R";
            break;

        case Keyboard.B:
            signatureKeySequence += "B";
            break;

        case Keyboard.A:
            signatureKeySequence += "A";
            break;

        default:
            signatureKeySequence = "";
            break;
    }

    // crop sequence
    signatureKeySequence = signatureKeySequence.substr(0, KONAMI_CODE.length);

    // check for konami code
    if (signatureKeySequence == KONAMI_CODE) {
        // 30 lives!
    }
}
26
ответ дан 27 November 2019 в 15:43
поделиться

Вы можете использовать Casalib . Существуют классы Key и KeyCombo . Вы можете прослушать KeyComboEvent.SEQUENCE .

Рабочий пример:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init();">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;

            import org.casalib.events.KeyComboEvent;
            import org.casalib.ui.Key;
            import org.casalib.ui.KeyCombo;
            import org.casalib.util.StageReference;

            private const KONAMI_CODE:KeyCombo = new KeyCombo([Keyboard.UP,Keyboard.UP,Keyboard.DOWN,Keyboard.DOWN,Keyboard.LEFT,Keyboard.RIGHT,Keyboard.LEFT,Keyboard.RIGHT,("B").charCodeAt(),("A").charCodeAt()]);

            private function init():void {
                StageReference.setStage(this.systemManager.stage);

                Key.getInstance().addKeyCombo(KONAMI_CODE);
                Key.getInstance().addEventListener(KeyComboEvent.SEQUENCE,onKonami);
            }

            private function onKonami(evt:KeyComboEvent):void {
                if (evt.keyCombo == KONAMI_CODE){
                    Alert.show("You know Konami code?","WOW");
                }
            }
        ]]>
    </mx:Script>
</mx:Application>
7
ответ дан 27 November 2019 в 15:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: