我需要一些帮助。我试图让我的角色走向两个方向(左和右)和静止动画时静止。我设法使角色向右走,使空闲动画工作。现在,如果我将代码从右键复制到左键,则步行动画会在两个方向的第一帧中卡住。我试着尝试一下,但没有运气。我很抱歉,如果我听起来像诺布。我刚开始学习编程。
这是我使用的代码
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 ();
}
}
答案 0 :(得分:0)
这就是你从公然的复制和粘贴中得到的东西,而没有学习内部如何工作的机制。您将两个侦听器设置为舞台,两者都会更改mcPlayer
,无论它是否已被另一个侦听器更改。因此,您需要在一个侦听器中编写两组代码,并使用笔和纸来遍历代码,以确保isRight==true
和isLeft==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
的听众所覆盖。