
10.02.2012, 19:05
|
|
Регистрация: Feb 2012
Сообщений: 3
|
Оптимизация обработки событий клавиатуры
Делаю многопользовательскую игрушку, клиент пишу на AS3. Передвижение персонажа осуществляется с клавиатуры. Все вроде бы банально, но дело в том, что при нажатии и удержании клавиши после небольшой задержки начинают имитироваться быстрые повторные нажатия. И, что интересно, Firefox имитирует только нажатие (событие KEY_DOWN), а вот Opera "гоняет" клавишу туда-сюда (KEY_DOWN - KEY_UP). Это в Ubuntu, в других ОС не проверял еще.
Вся проблема в том, что мне необходимо отправлять на сервер сообщения о том, что пользователь нажал какую-либо клавишу, и что он отпустил ее (по нажатию/отпусканию клавиши меняется состояние объекта). Так вот в случае с Оперой клиент начинает безумно "засорять эфир" потоком сообщений о событиях, которые на самом деле не происходят (имитируемые нажатия клавиши). Мне это очень не нравится, т.к. повышает нагрузку на сервер и сеть.
Есть какие-то готовые решения этой проблемы? У меня есть одна идея, но для ее реализации надо быть уверенным, что у всех клиентов скорость повторных нажатия примерно одинакова, а уверенности такой нет. А может, под виндой такой проблемы нет?
|