Скрипт действия. Как отключить клавиатуру?

как отключить клавиши клавиатуры в Action Script?

Я создаю флеш-игру «на память», идея открыть 2 одинаковые карты. Когда открыта вторая карта, она отображается в течение 750 миллисекунд, в это время игрок не может выполнять никаких действий. Когда я использую этот mouseChildren = false; игрок, не может щелкать мышью в это время, но он может использовать стрелки клавиатуры / ввод / пробел / кнопки табуляции ... Мне нужно отключить его на этот раз.

Вот часть моего кода:

            {
                    trace("Wrong");
                    _message = "Wrong";
                    message_txt.text = _message;
                     _secondCard = event.currentTarget;


                    var timer:Timer = new Timer(750, 1);
                    timer.addEventListener(TimerEvent.TIMER_COMPLETE, flipBack);
                    timer.start();

                stage.addEventListener(KeyboardEvent.KEY_DOWN, blindKeyboard);//added here
                stage.addEventListener(KeyboardEvent.KEY_UP, blindKeyboard);//added here


                    mouseChildren = false;


                }
            }

function blindKeyboard(e:KeyboardEvent):void{ //added here function
    e.preventDefault();
    e.stopPropagation();
}

            protected function flipBack(event:TimerEvent):void
    {
        _firstCard.gotoAndPlay("flipBack");
        _secondCard.gotoAndPlay("flipBack");
        _firstCard.addEventListener(MouseEvent.CLICK, checkCards);
        _secondCard.addEventListener(MouseEvent.CLICK, checkCards);
        _firstCard = _secondCard = undefined; 
        mouseChildren = true;
    }

person Community    schedule 04.05.2013    source источник


Ответы (2)


У вас могут быть просто функции для добавления / удаления слушателей:

function addListeners():void
{
    // loop through and add the listeners for the cards
    // add keyboard listeners
}

function removeListeners():void
{
   // loop through and remove listeners from the cards
   // remove keyboard listeners
}

Прежде чем установить таймер, вы удаляете своих слушателей:

removeListeners();

Затем в обработчике таймера обратного отсчета вы просто вызываете addListeners:

addListeners();
person prototypical    schedule 04.05.2013
comment
то же, что и добавление - просто используйте removeEventListener вместо addEventListener - person ; 06.05.2013

Пытаться

stage.addEventListener(KeyboardEvent.KEY_DOWN, blindKeyboard);
stage.addEventListener(KeyboardEvent.KEY_UP, blindKeyboard);
function blindKeyboard(e:KeyboardEvent):void{
    e.preventDefault();
    e.stopPropagation();
}
person codingbuddha    schedule 04.05.2013
comment
Спасибо за ответ, но это не помогает - то же самое. Я могу пользоваться клавиатурой все время. - person ; 04.05.2013
comment
Обновлено. Я пробовал это с помощью простого TextInput, и он работал нормально - person codingbuddha; 04.05.2013
comment
Амм ... То же самое. Не работает ... Я обновил свой вопрос, где разместил свой код. Может я неправильно сделал? - person ; 04.05.2013
comment
Поместите stage.addEventListener-Lines не в метод, а просто в первый ключевой кадр - person codingbuddha; 04.05.2013
comment
Хммм ... Можешь куда-нибудь выложить свой проект, чтобы я посмотрел? Так как здесь он работает нормально :( - person codingbuddha; 05.05.2013