Предоставление приложению Flex фокуса в браузере для захвата нажатий клавиш

Я написал небольшую видеоигру на Flex, которая запускается в браузере. Игрок перемещается, нажимая кнопки со стрелками на клавиатуре, поэтому мне нужно фиксировать эти нажатия клавиш. Фактически, игровое действие начинается, когда игрок нажимает одну из этих клавиш.

Чтобы фиксировать нажатия клавиш, приложение Flash / Flex, а не только браузер, должно быть в фокусе.

Как я могу убедиться, что приложение находится в фокусе? Я реализовал небольшую хитрость: кнопку «Начать», которую нужно нажать, чтобы начать игру. Единственная цель этой кнопки - убедиться, что приложение находится в фокусе. Есть ли лучшее решение для этого?


person Paul Reiners    schedule 01.01.2010    source источник


Ответы (3)


Нет, это единственный способ, но я думаю, что ваше нынешнее решение - отличное. Причина, по которой вы (как пользователь) должны щелкнуть для фокусировки, заключается в том, что приложение не может незаметно украсть фокус, чтобы затем регистрировать нажатия клавиш без вашего ведома, например украсть пароли.

person richardolsson    schedule 01.01.2010
comment
Есть другой способ. Проверьте мой ответ. - person the_new_mr; 20.04.2012

В некоторых браузерах (IE) вы можете задать фокус SWF через JavaScript. К сожалению, в Firefox это не работает. Таким образом, некоторым пользователям придется щелкнуть SWF-файл, чтобы сфокусироваться на нем. Вы можете довольно легко в своей игре проверить браузер, и если это IE, тогда автоматически установите фокус SWF и не покажите кнопку «Начать». Затем в Firefox покажите кнопку «Начать».

person James Ward    schedule 01.01.2010

Взгляните на ссылку ниже. Хорошо сработало для меня.

http://www.flexjunk.com/2010/12/30/managing-initial-swf-focus-in-all-browsers/

person the_new_mr    schedule 20.04.2012