Adobe Flash。如何在不中断使用AS3的情况下播放动画直到结束?

时间:2014-01-19 14:14:06

标签: actionscript-3 flash animation adobe

我正在制作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");

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

1 个答案:

答案 0 :(得分:0)

我无法说明你的问题。但据我所知,你想制作动画,没有任何障碍。在这种情况下,您需要为角色执行基本的打开 - 关闭动画。

e.g。那样;

用于角色攻击动画的

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");
            }
  }

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