Я делаю шутер с сценария действий 3. У меня есть герой, который движется, когда любой из клавиши со стрелкой нажата мой код выглядит следующим образомОдновременное нажатие вызывающее нежелательное поведение
//some class level variables
private var vx :int = 0;
private var vy :int = 0;
//in the Main constructor
stage.addEventListener(KeyboardEvent.KEY_DOWN , moveHero);
stage.addEventListener(KeyboardEvent.KEY_UP , stopHero);
stage.addEventListener(Event.ENTER_FRAME , onEnter);
//and all the handlers
function moveHero(e:KeyboardEvent)
{
if (e.keyCode == 37)
{
vx = -5;
}
else if (e.keyCode == 38)
{
vy = -10;
}
else if (e.keyCode == 39)
{
vx = 5;
}
else if (e.keyCode == 40)
{
vy = 10;
}
}
function stopHero(e:KeyboardEvent)
{
//when key is up stop miving the hero
vx = 0;
vy = 0;
}
function onEnter(e:Event):void
{
//updtae hero position
hero.x += vx;
hero.y += vy;
}
Теперь моя проблема когда пользователь имеет и клавиши вверх и вниз или влево и вправо под его пальцами и вдруг прижать их попеременно то герой показывает заметное отставание в создании реакции на нажатие клавиш
Ключевым прессам следует установить булевы, а в вашем прослушивающем устройстве enterframe вы должны перемещать символ в соответствии с этими булевыми. Само действие не должно происходить в обработчике нажатия клавиш. – BotMaster
@BotMaster Почему OP нуждается в прослушивателе enterframe? – akmozo