Я пробовал множество различных методов, чтобы сделать это так, как я хочу. Я использую клавиши со стрелками для показа MovieCLip по оси X, используя только стрелку вправо и стрелку влево, в то время как MovieClip выполняет анимацию во время движения. Я обнаружил, что функция Tween () будет работать лучше всего. Вот мой код:
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
function keyPressed(evt:KeyboardEvent):void
{
if(evt.keyCode == Keyboard.RIGHT && var_move == false)
{
var_move = true;
hero.gotoAndPlay(3);
hero.scaleX = 1;
var tween1:Tween = new Tween(hero, "x", None.easeNone, hero.x, hero.x += 70, 15, false);
tween1.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinished);
}
if(evt.keyCode == Keyboard.LEFT && var_move == false)
{
var_move = true;
hero.gotoAndPlay(3);
hero.scaleX = -1;
var tween2:Tween = new Tween(hero, "x", None.easeNone, hero.x, hero.x -= 70, 15, false);
tween2.addEventListener(TweenEvent.MOTION_FINISH, onMotionFinished);
}
}
function onMotionFinished($evt:TweenEvent):void
{
hero.gotoAndPlay("Stand");
var_move = false;
}
Код, о котором идет речь:
var tween1:Tween = new Tween(hero, "x", None.easeNone, hero.x, hero.x += 70, 15, false);
Мне было интересно, нужна ли вам конечная точка для Tween (). Это единственная часть, которая меня портит.
Я не хочу, чтобы объект останавливался в заданных точках. Так что, если вы просто нажмете кнопку со стрелкой, объект продолжит работу до заданной для него точки. Я пытаюсь остановить на десять центов, где захочу. Я попробовал следующий код.
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
stage.addEventListener(KeyboardEvent.KEY_UP, releaseKey);
function keyPressed(evt:KeyboardEvent):void
{
if(evt.keyCode == Keyboard.RIGHT)
{
var_move = true;
hero.gotoAndPlay("Walk");
hero.scaleX = 1;
hero.x += 5;
}
if(evt.keyCode == Keyboard.LEFT)
{
var_move = true;
hero.gotoAndPlay("Walk");
hero.scaleX = -1;
hero.x -= 5;
}
}
function releaseKey(evt:KeyboardEvent):void
{
if(evt.keyCode == Keyboard.RIGHT || evt.keyCode == Keyboard.LEFT)
{
hero.gotoAndStop("Stand");
}
}
Этот код работает, когда дело доходит до остановки анимации на десять центов, но с плохой задержкой, когда сначала нажимается клавиша со стрелкой. Почти как easyIn, но это не так. Это как задержка ответа в ActionScript и нажатии клавиши. Кто-нибудь может мне помочь с одним из этих вопросов? Спасибо.