![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2009
Сообщений: 23
|
Всем привет. Пишу игру, соответственно нужно шустро обрабатывать нажатие кнопок, без задержек. Стандартные обработчики срабатывают с задержкой. Поковырялся в интернетах, почитал всякое разное, в результате родился класс(сюда вставляю только часть):
public class Input { static private var keyDown : Array = new Array(); // ** initialize static function initialize( stage : Stage ) { stage.addEventListener( KeyboardEvent.KEY_DOWN, onKeyDownHandler ); stage.addEventListener( KeyboardEvent.KEY_UP, onKeyUpHandler ); } // ** isKeyDown static function isKeyDown( key : Number ) : Boolean { return keyDown[ key ]; } // ** onKeyDownHandler static private function onKeyDownHandler( e : KeyboardEvent ) { keyDown[ e.keyCode ] = true; } // ** onKeyUpHandler static private function onKeyUpHandler( e : KeyboardEvent ) { keyDown[ e.keyCode ] = false; } } В игре WASD управление, если нажать, например, клавишу A и держать секунд 5, а потом отпустить, - персонаж продолжает двигаться некоторое время, после чего останавливается Подскажите как бы исправить? |
|
|||||
|
Ищите либо ошибку, либо проверяйте код ибо достичь этого эффекта инерции не так-то и легко и кодеры спецом думают как-бы войти в управляемый занос или дрифт???
Зацените то-же WASD и нет никаого залипания тк. я и не думал его делать http://www.murmadillo.tut.su/html/co...n-attempt.html |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 51
|
_dm, сталкивался с таким "залипанием", то бишь с задержкой обработки клавиатурных эвентов. У меня оно появлялось, когда плеер не справлялся с потоком вычислений. Проверьте реальный фреймрейт и время обработки кадра.
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Такой класс, один в один, давным давно написали.
|
|
|||||
|
Регистрация: Feb 2009
Сообщений: 23
|
Игра выдаёт примерно 22 кадра в секунду, проц грузится сильно, думаю из-за этого может возникать такой баг
Походу там в очереди накапливается куча событий, которые потом обрабатываются после отпускания клавиши... как бы это вылечить? Может принудительно сбрасывать флаг нажатия каждые 2 секунды? ![]() |
|
|||||
|
Регистрация: Jun 2008
Сообщений: 51
|
И придется каждые две секунды кнопку нажимать снова?
Лучше как-нибудь нагрузку снизьте, тормоза - плохо, в любом случае. |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 23
|
Ясно. Вобщем вопрос закрыт, всем спасибо
![]() |
|
|||||
|
Как удалось решить?
__________________
Дело не в тебе |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 23
|
Никак =( Пока надеюсь на русский авось и скидываю баласт =)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 13:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|