【问题标题】:Adobe Flash. How to play animation till end without interrupting using AS3?Adobe Flash。如何在不中断使用 AS3 的情况下播放动画直到结束?
【发布时间】:2024-04-16 07:00:01
【问题描述】:

我正在创建 Flash 游戏。这里有 3 种不同的攻击(标签名称:attack1, attack2, attack3),具有不同的动画(键盘绑定 z、x、c)。

问题

例如,如果我使用attack1(通过单击“z”)它会显示大约100 帧的动画(动画持续3 秒),但是在动画期间我单击attack2 (x) 它会取消attack1 动画并开始播放attack2 动画。我需要在动画期间制作它不能被其他动画打断。

我已经创建了一个数组:

var codes:Array = new Array(0, 90, 88, 67);
var attack:Number = 0;

这是我的 key_down 函数:

    private function key_down(event:KeyboardEvent)
    {
        if (event.keyCode == 90)
        {

            if (attack > 0)
            {
                return;
            }// don't interrupt other attack
            for (var c in codes)
            {
                if (codes[c] == event.keyCode)
                {
                    attack = c;
                    Hero.gotoAndStop("attack" + attack);
                }
            }
        }
        if (event.keyCode == 88)
        {
            if (attack > 0)
            {
                return;
            }// don't interrupt other attack
            for (c in codes)
            {
                if (codes[c] == event.keyCode)
                {
                    attack = c;
                    Hero.gotoAndStop("attack" + attack);
                }
            }
        }
        if (event.keyCode == 67)
        {
            if (attack > 0)
            {
                return;
            }// don't interrupt other attack
            for (c in codes)
            {
                if (codes[c] == event.keyCode)
                {
                    attack = c;
                    Hero.gotoAndStop("attack" + attack);
                }
                else
                {
                    Hero.gotoAndStop("attack" + attack);
                }
            }
        }
}

当我使用它时,它不会中断相同的攻击动画,我的意思是如果我通过单击“x”来使用 Attack1,我可以再次单击“x”并且动画不会中断,但仍然可以通过单击其他按钮“z”或"c"。

据我了解,在时间轴上一个动画的帧中,我需要添加类似

的内容
attack=0;
MovieClip(parent).gotoAndStop("stay");

动画播放后attack会设置为0并继续播放“停留”动画,但是我收到错误Access of undefined property attack.

【问题讨论】:

    标签: actionscript-3 flash animation adobe


    【解决方案1】:

    我无法说明您的问题。但据我了解,您想顺利制作动画。在这种情况下,您需要为角色制作基本的 open - close 动画。

    例如像这样;

    1 - 30 帧用于角色攻击动画。这意味着“打开”动画。

    30 - 60 帧,当你面临攻击时,你需要运行“关闭”动画。

    function attack():void
    {
                if(currentState == "Attack")
                {
                    currentState = "Attack";
                    timelineAnimation.gotoAndPlay("Attack_InAnimation");
                }
                else if(currentState == "CounterAttack")
                {
                    currentState = "CounterAttack";
                    timelineAnimation.gotoAndPlay("Attack_OutAnimation");
                }
      }
    

    我希望这对你有用。这只是我的方法。

    【讨论】:

    • 我不知道如果你理解我的问题,我会尽力解释。如果我点击“z”按钮它会启动attack1动画,如果我点击“x”按钮 - 它会启动attack2动画,如果我点击“c”按钮它会启动attack3动画。单击“z”按钮后,它开始攻击 1 动画约 3 秒,我需要使它无法通过单击其他按钮(x,c)来中断它。
    • 在英雄时间线中,我有标记为攻击 1、攻击 2、攻击 3、跳跃等的关键帧......这是截图:i.stack.imgur.com/bGnUD.png
    • 嗯,实际上它与我之前所说的方法相同。您必须缓存当前动画以供以后销毁或关闭它们。
    最近更新 更多