![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2012
Сообщений: 9
|
Добрый день,господа!У меня проблема с функциями,а конкретно с функцией смещения персонажа по оси x при нажатии кнопки.Дело в том,что после нажатия кнопки и ,непосредственно,смещением имеет место некоторая пауза,около секунды или 2х. Так-же,само движение осуществляется так-сказать рывками,заметны они плохо,но все же не приятны.Вот код из исходника
//Функция ходьбы влево function GoLeft() { this.HERO1._x -= 4; this.HERO1.legs.gotoAndPlay(2); } //Функция ходьбы вправо function GoRight() { this.HERO1._x += 4; this.HERO1.legs.gotoAndPlay(2); } //Слушатель нажатия кнопки и вызов функции this.onKeyDown = thisKeyDown; Key.addListener(this); function thisKeyDown(){ if (Key.isDown(65)) { GoLeft(); } else if (Key.isDown(68)) { GoRight(); } } |
|
|||||
|
Модрон-ветеринар
|
Понятная задержка - отрабатывается первое нажатие, т.е. реакция на событие onKeyDown, персонаж делает шажок. Затем через небольшое время при нажатой и не отпущенной клавише опять срабатывает onKeyDown, и при дальнейшем опросе клавиатуры оно срабатывает непрерывно.
У вас в корне неверный подход к управлению движением. Непрерывное движение нужно организовывать не на основе onKeyDown, а, например, по onEnterFrame или setInterval, т.е. средстваи, дающими непрерывное выполнение. Останавливать движение по событию onKeyUp. Иными словами, при правильном подходе событие onKeyDown только запускает движение (но не служит его "двигателем"), а onKeyUp - останавливает.
__________________
Идите первым! Последний раз редактировалось mooncar; 07.10.2012 в 19:31. |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 9
|
А не могли бы вы написать,как правильно?
|
|
|||||
|
Модрон-ветеринар
|
Писать, к сожалению, нет времени, а вот статья Простой платформенный движок на Хитри вам должна помочь.
Обратите там внимание на обработчик onEnterFrame, по нему непрерывно вызывается функция stepHero() - то, о чем я и писал.
__________________
Идите первым! |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 9
|
Я её читал,но видимо,не внимательно.Спасибо!
|
![]() |
![]() |
Часовой пояс GMT +4, время: 19:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|