Actionscript 3 如何循环特定的电影片段

Actionscript 3 如何循环特定的电影片段,actionscript-3,flash,animation,symbols,Actionscript 3,Flash,Animation,Symbols,我目前正在使用ActionScript3在FlashCS6中制作一个平台游戏。我已经设法使用不同的帧将基本精灵设置为单个符号/对象 每个精灵/动作本身也是一个不同的符号(例如,有5个左右运行到右侧帧,因此我将它们合并到一个单独的符号中。然后,该符号被复制到播放器符号(或主符号)中 我已经使用gotoAndPlay()命令设法让我的代码运行特定的符号/帧,但是我的问题是,即使循环结束时有stop();操作,它仍会继续到下一帧 在本例中,它将继续运行“runLeft”动画的第一帧,然后再恢复到正确的

我目前正在使用ActionScript3在FlashCS6中制作一个平台游戏。我已经设法使用不同的帧将基本精灵设置为单个符号/对象

每个精灵/动作本身也是一个不同的符号(例如,有5个左右运行到右侧帧,因此我将它们合并到一个单独的符号中。然后,该符号被复制到
播放器
符号(或主符号)中

我已经使用
gotoAndPlay()
命令设法让我的代码运行特定的符号/帧,但是我的问题是,即使循环结束时有
stop();
操作,它仍会继续到下一帧

在本例中,它将继续运行“runLeft”动画的第一帧,然后再恢复到正确的“runRight”动画。但是,它会在这两个帧之间切换并闪烁,直到我放开关键帧

假设我有一个双向运行的动画,都有5帧长(1a、2a、1b等)。当我按下向右箭头键时,它将运行帧

1a, 1b, 1c, 1d, 1e
但是,在
1e
,我有一个
stop();
命令,理论上认为,由于案例仍然处于活动状态,它将循环回到起点

1a、1b、1c、1d、1e、2a、1a、2a、1a等等,直到我松开键。如果我按住左箭头键,它将继续播放“动画3”的第一帧(之后的下一个动画)

这是我正在使用的代码,但我不认为这是
DocumentMain的问题。作为
code,但更多的是符号本身的问题

按键(按下)处理程序功能

switch(e.keyCode)
{
    case 37:    //Left Arrow
        _vx = -5;
        _player.gotoAndPlay("runLeft");
        break;

    case 38:    //Up Arrow
        _vy = -27;
        break;

    case 39:    //Right Arrow
        _vx = 5;
        _player.gotoAndPlay("runRight");
        break;

    default:
}
switch(e.keyCode)
{
    case 37:    //Left Arrow                
        _vx = 0;
        _player.gotoAndPlay("standLeft");
        break;

    case 39:    //Right Arrow
        _player.gotoAndPlay("standRight");
        _vx = 0;
        break;

    default:
}
以及KeyUP处理函数

switch(e.keyCode)
{
    case 37:    //Left Arrow
        _vx = -5;
        _player.gotoAndPlay("runLeft");
        break;

    case 38:    //Up Arrow
        _vy = -27;
        break;

    case 39:    //Right Arrow
        _vx = 5;
        _player.gotoAndPlay("runRight");
        break;

    default:
}
switch(e.keyCode)
{
    case 37:    //Left Arrow                
        _vx = 0;
        _player.gotoAndPlay("standLeft");
        break;

    case 39:    //Right Arrow
        _player.gotoAndPlay("standRight");
        _vx = 0;
        break;

    default:
}

这里有几个问题:

  • 几秒钟后,向下键将被反复调用,因此它将不断地告诉movieClip转到并播放某一帧,因此,在动画序列的末尾,您将得到重复的1a、2a、1a…等。您只需要在向下键时调用一次gotoAndPlay,即可能使用布尔值来跟踪:

    case 37:    //Left Arrow keydown
        _vx = -5;
        if (!isLeft) {
            isLeft = true;
            _player.gotoAndPlay("runLeft");
        }
        break;
    
    
    case 37:    //Left Arrow keyup
        _vx = 0;
        isLeft = false;
        _player.gotoAndPlay("standLeft");
        break;
    
  • 在movieClip帧上使用例如gotoAndPlay('1a'),而不是使用stop();以便动画自身循环

  • 希望这会有帮助。

    谢谢你的帮助。我现在设法修复了它。你的帮助帮了我很大的忙:)只有一个问题-我正在尝试让游戏运行“跳跃”动画(面向右侧),然后运行默认的“静止”动画(也面向右侧)。然而,我不知道如何将其发送到该动画。如前所述,动画是“玩家”符号中的符号。我尝试过使用
    gotoAndPlay(“站在右边”,“玩家”)但它不识别播放器作为其他动画所在的目录,但它不识别。在符号之间有不同的指令吗?很高兴能起作用。不幸的是,你不能告诉gotoAndPlay同时玩两件事。如果我理解正确,您可以在播放跳跃动画时使角色面向左/右。设置动画movieClip,使角色仅面向右侧或左侧,即跳跃动画面向右侧,行走动画面向右侧…等等。诀窍是将xScale更改为-1,以便动画movieClip水平翻转180度,就像它面向左侧一样。谢谢:)我将它翻转/跳跃到正确的方向。然而,当玩家落地时,我不知道如何让角色朝着相同的方向站立(如果不移动)或以相同的方式奔跑。玩家只是…在按下一个键之前消失,但我更喜欢角色先站着然后跑(更好的过渡):/@NeoKuro很遗憾,我需要更多信息来帮助你。您使用了什么代码来处理跳跃动画及其落地后的情况。也许用你正在使用的代码开始另一个线程:)抱歉,我尝试了一段时间自己解决它(cba在过去的几天里也这么做了,哈哈),但我最终解决了它,使用了以前的解决方案并翻转了它。非常感谢:)