![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Oct 2008
Адрес: Воронеж
Сообщений: 75
|
Есть следующий код для передвижения объекта.
public function root () { addChild(the_hero); the_hero.x=200; the_hero.y=200; stage.addEventListener(KeyboardEvent.KEY_DOWN, key_pressed); stage.addEventListener(KeyboardEvent.KEY_UP, key_releassed); addEventListener(Event.ENTER_FRAME, render); } function key_pressed(e:KeyboardEvent):void { if (up==false && down==false && left==false && right==false) { switch(e.keyCode) { case Keyboard.UP: up=true; break; case Keyboard.DOWN: down=true; break; case Keyboard.LEFT: left=true; break; case Keyboard.RIGHT: right=true; break; } } } function key_releassed(e:KeyboardEvent):void { switch(e.keyCode) { case Keyboard.UP: up=false; break; case Keyboard.DOWN: down=false; break; case Keyboard.LEFT: left=false; break; case Keyboard.RIGHT: right=false; break; } } function render(e:Event):void { if (up || down){ if(up){ yspeed-=power; if (the_hero.y <0) { yspeed=0; } the_hero.rotation=0; } if(down){ yspeed+=power; if (the_hero.y >400) { yspeed=0; } the_hero.rotation=180; } yspeed*=friction; the_hero.y+=yspeed; } if (left || right) { if(left){ xspeed-=power; the_hero.rotation=270; } if(right){ xspeed+=power; the_hero.rotation=90; } xspeed*=friction; the_hero.x+=xspeed; } } ![]() Если пользователь поочередно нажимает клавиши движения то все нормально. Но в случае если он нажал сразу две кнопки и потом одну отпустил а вторую оставил нажатый то происходит задержка около секунды прежде чем объект начинает двигаться ![]() Подскажите что я сделал не так? Или в данном случае может вообще какоето другое решение нужно использовать? Заранее благодарю за ответ. |
|
|||||
|
меценат
|
switch(event.keyCode) { case Keyboard.RIGHT : rightArrow = true; break; case Keyboard.LEFT : leftArrow = true; break; case Keyboard.UP : upArrow = true; break; case Keyboard.DOWN : downArrow = true; break; //добавь default : break; } ![]()
__________________
Безвыходных положений небывает © Барон Мюнхаузен=)Исходники |
|
|||||
|
ветеран форума
|
D12, это не нужно.
Проблема в логике: Нажал первую клавишу: началось движение. Нажал 2ю: ничего не произошло, т к одно из направлений true Отпустил первую: все направления стали false А когда держишь клавишу, через определенный интервал событие нажатия происходит повторно(зажимаем "а" и сначала одна буква, затем еще допечатываются). И в этот раз, т к все false, начинается движение в другую сторону. Все логично.
__________________
4am is time to rock |
|
|||||
|
Передвигать можно так:
Клавиатура получает события нажатия и отпускания кнопок. Т.е. если нажать кнопку вверх (событие KEY_DOWN) триггерДвиженияВерх = true, то объект в это время будет двигаться вверх, пока кнопка нажата, до тех пор пока не наступит событие отпускания кнопоки вверх KEY_UP объект перестанет двигаться вверх (триггерДвиженияВерх = false) Т.е. независимое управление. пример http://www.dnadillo.dn.ua/fla/Car-2D.html |
|
|||||
|
Цитата:
__________________
if (love is true) break my.heart; |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:41. |
|
|
« Предыдущая тема | Следующая тема » |
|
|