在 AS3 中移动 运行 循环

Moving running cycle in AS3

我想制作一个移动角色,当键盘箭头为 pressed.For 时,运行 是一个影片剪辑示例:

当没有按下箭头时我希望角色在按下任何键盘箭头时不移动并且运行一个影片剪辑动画,其中角色运行s当按下右箭头时和相同用左箭头。

var upPressed:Boolean = false;
var downPressed:Boolean = false;
var leftPressed:Boolean = false;
var rightPressed:Boolean = false;

movieClip_1.addEventListener(Event.ENTER_FRAME,fl_MoveInDirectionOfKey);
stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_SetKeyPressed);
stage.addEventListener(KeyboardEvent.KEY_UP, fl_UnsetKeyPressed);

function fl_MoveInDirectionOfKey(event:Event)
{
    if (upPressed)
     {
         movieClip_1.y -= 5;
     }
if (downPressed)
{
    movieClip_1.y += 5;
}
if (leftPressed)
{
    movieClip_1.x -= 5;
}
if (rightPressed)
{
    movieClip_1.x += 5;
}
}

  function fl_SetKeyPressed(event:KeyboardEvent):void
 {
     switch (event.keyCode)
     {
         case Keyboard.UP:
        {
        upPressed = true;
        break;
        }
    case Keyboard.DOWN:
    {
        downPressed = true;
        break;
    }
    case Keyboard.LEFT:
    {
        leftPressed = true;
        break;
    }
    case Keyboard.RIGHT:
    {
        rightPressed = true;
        break;
    }
}
 }

 function fl_UnsetKeyPressed(event:KeyboardEvent):void
 {
    switch (event.keyCode)
    {
       case Keyboard.UP:
    {
        upPressed = false;
        break;
    }
    case Keyboard.DOWN:
    {
            downPressed = false;
        break;
        }
        case Keyboard.LEFT:
    {
        leftPressed = false;
        break;
        }
    case Keyboard.RIGHT:
    {
        rightPressed = false;
        break;
        }
}
}

我的影片剪辑是:run_rightrun_left

我的时间表:

这是你的 Mistake

movieClip_1.addEventListener(Event.ENTER_FRAME,fl_MoveInDirectionOfKey);
------------

删除

movieClip_1.

应该是这样的

stage.addEventListener(Event.ENTER_FRAME,fl_MoveInDirectionOfKey);

创建名为 "movieClip_1" 的 MovieClip。

var movieClip_1= new MovieClip_1();

在此 MovieClip 中,在第一帧上添加 "run_right" 动画,在第二帧上添加 "run_left" 动画。

我的意思是,添加包含您的动画的新 MovieClip。

然后,转到fl_MoveInDirectionOfKey函数并写入:

if (rightPressed)
{
   movieClip_1.gotoAndStop(1);
}
else if (leftPressed)
{
   movieClip_1.gotoAndStop(2);
}
else
{
   // no animation
   // movieClip_1.gotoAndStop(3);  idle animation could be on frame 3
}

这是第二个解决方案,答案(Event.Enter_Frame)在movieClip里面所以你需要在MovieClip[=13=之前添加(root.) ]

改成这样

if (upPressed)
 {
     root.movieClip_1.y -= 5;
 }
if (downPressed)
{
     root.movieClip_1.y += 5;
}
if (leftPressed)
{
     root.movieClip_1.x -= 5;
}
if (rightPressed)
{
     root.movieClip_1.x += 5;
}