Actionscript 3.0: события клавиатуры и удаленный докладчик

У меня есть простой Flash-ролик со следующим кодом. Идея состоит в том, чтобы переходить от одного кадра к другому или назад с помощью клавиш со стрелками на клавиатуре:

stop();

//listen for key press
stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);

//if left or right arrow, go to previous or next frame
function myKeyDown(e:KeyboardEvent):void {

switch (e.keyCode) {
case Keyboard.LEFT :
prevFrame();
break;

case Keyboard.RIGHT :
nextFrame();
break;
}
}

Итак, это работает нормально, за исключением того, что мне нужно использовать Kensington Presenter для удаленного управления клавиатурой. Он должен отправлять компьютеру команду нажатия клавиши для клавиш со стрелками вправо или влево, но это не работает.

Он работает с моим устаревшим проектом Director, используя аналогичный синтаксис. Также работает в PowerPoint.

Любые мысли будут оценены. Я работаю на Mac, но фильм будет работать на платформах Windows и Mac как скомпилированное приложение.


person Dave    schedule 22.01.2010    source источник
comment
Попробуйте отследить код ключа, который получает ваш обработчик, когда вы нажимаете кнопку на пульте.   -  person Anon.    schedule 22.01.2010
comment
То же предложение, что и анон. Отследите e.keyCode в обработчике событий myKeyDown. Посмотрите, получаете ли вы вообще какой-либо результат.   -  person sberry    schedule 22.01.2010
comment
Другая проблема может заключаться в том, что ваше приложение теряет фокус и, таким образом, пропускает ключевые события. Вы можете использовать таймер для повторного получения фокуса каждые пару секунд, чтобы исправить это.   -  person ZackBeNimble    schedule 22.01.2010


Ответы (1)


Если он не выдает ошибку, вы должны сфокусировать этап и написать ниже прослушиватель событий

stage.focus = this;
stage.focusRect = false;

stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);


function myKeyDown(e:KeyboardEvent):void {

switch (e.keyCode) {

case Keyboard.LEFT :

this.currentFrame++;

break;

case Keyboard.RIGHT :

this.currentFrame--;

break;
}

}
person Tareq Rahman    schedule 18.07.2015