动作脚本3步行动画

时间:2016-03-06 17:52:50

标签: actionscript-3 animation

我需要一些帮助。我试图让我的角色走向两个方向(左和右)和静止动画时静止。我设法使角色向右走,使空闲动画工作。现在,如果我将代码从右键复制到左键,则步行动画会在两个方向的第一帧中卡住。我试着尝试一下,但没有运气。我很抱歉,如果我听起来像诺布。我刚开始学习编程。

这是我使用的代码

RightBtn.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
function mouseDown(e:MouseEvent): void {
if(RightBtn){
    isRight = true;
}
}
RightBtn.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
function mouseUp(e:MouseEvent): void {
    if(RightBtn){
    isRight = false;
}
}

stage.addEventListener(Event.ENTER_FRAME, loop);
function loop(Event){
    if(isRight==true && mcPlayer.x < 750){
    mcPlayer.x += 7;
    mcPlayer.gotoAndStop (2);
    mcPlayer.walkR.play ();
}
else{
    mcPlayer.gotoAndStop (1)
    mcPlayer.Idle.play ();
}
}

LeftBtn.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown2);
function mouseDown2(e:MouseEvent): void {
if(LeftBtn){
    isLeft = true;
}
 }

LeftBtn.addEventListener(MouseEvent.MOUSE_UP, mouseUp2);
function mouseUp2(e:MouseEvent): void {
if(LeftBtn){
    isLeft = false;
}
}

stage.addEventListener(Event.ENTER_FRAME, loop2);
function loop2(Event){
if(isLeft==true && mcPlayer.x > 65){
    mcPlayer.x -= 7;
    mcPlayer.gotoAndStop (3);
    mcPlayer.walkL.play ();
}
else{
    mcPlayer.gotoAndStop (1)
    mcPlayer.Idle.play ();

}
}

1 个答案:

答案 0 :(得分:0)

这就是你从公然的复制和粘贴中得到的东西,而没有学习内部如何工作的机制。您将两个侦听器设置为舞台,两者都会更改mcPlayer,无论它是否已被另一个侦听器更改。因此,您需要在一个侦听器中编写两组代码,并使用笔和纸来遍历代码,以确保isRight==trueisLeft==true分支分开工作,并且不会干扰每个其他。适当的条件陈述应该是这样的:

if (isRight==true && mcPlayer.x < 750) {
    // do a step right
} else if (isLeft==true && mcPlayer.x > 65){
    // do a step left
} else {
    // do idle animation
}

启动动画的代码本身是正确的,它们只是被不知道其他代码改变mcPlayer的听众所覆盖。