Я разрабатываю приложение для киосков (игру), которое необходимо постоянно блокировать в полноэкранном режиме. Я использую для этого as3/flash/AIR. Сначала все началось хорошо, и по большей части все отлично работает. Но есть загадочная пивоварня где-то, о которой я не мог понять ... Вот где вам будет очень благодарна ваша помощь!AS3 - KeyboardEvent.KEY_DOWN в проекте AIR не запускает обработчик после удаления отображаемых объектов, а stage.focus не работает
Как я справилась с этой проблемой является добавление в самом начале приложения:
stage.addEventListener(KeyboardEvent.KEY_DOWN, playerOnKeyDown);
Тогда на моей playerOnKeyDown функции:
function playerOnKeyDown(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.ESCAPE)
{
event.preventDefault();
//More code here opening out menus, etc, etc.)
}
}
Таким образом, все это работало нормально , но, конечно, мне необходимо было также взять с собой:
stage.focus = stage;
в сторону, в противном случае при удалении объекты - как в removeChild() - срабатывание события не будет вести себя так, как я хотел, потому что вспышка изменила фокус в другом месте в списке отображения.
Я старался добавить фокус на сцену каждый раз, когда удаляет «дочерний элемент», и он отлично работает везде, за исключением одного раза за весь ход, сразу после удаления объекта из загруженного извне swf ,
Я еще добавить строки, как и следовало ожидать, чтобы работать:
removeChild(childFromLoadedSWF);
stage.focus = stage;
кроме того, что, когда я нажимаю любую клавишу, событие не вызовет мою функцию, и если я нажать клавишу ESC, он выводит меня из полноэкранного режима (его поведение по умолчанию), еще раз, полностью обойдя мою функцию прослушивания playerOnKeyDown.
Самое странное, что прямо перед этим, линия:
stage.hasEventListener(KeyboardEvent.KEY_DOWN))
следы верно!
В центре внимания находится на стадии, слушатель находится, и все же при нажатии на клавишу ESC по умолчанию игнорирует мою функцию полностью ....
Что может быть причиной этого?
СПАСИБО ВАС !!
Ну, похоже, по крайней мере на приложениях, упакованных для AIR, он действительно работает. На самом деле вышеприведенный код работает почти все время, предотвращая поведение ключа ESC по умолчанию. Проблема не в этом, а в том, что он обойдет моего слушателя. Не только клавиша ESC, но и ANY key .... Что-то еще должно продолжаться ... –
Как будто слушатель был удален, кроме этого нет.Это полностью обходит мою функцию прослушивателя playerOnKeyDown. –