如何让我的角色进行攻击

时间:2013-08-13 22:40:30

标签: actionscript-3

我正在尝试创建一个节拍游戏,现在我的角色攻击了。到目前为止我有3个攻击动画,并且工作正常。这就是我想要的,如果玩家按下攻击键,然后该角色会进攻,如果玩家一直按下攻击键,将继续它的攻击序列(注:我没有想如果玩家按住键,具有成为关键的新闻。)

问题是如果你继续捣碎它攻击的攻击按钮,但问题是它会在攻击按钮关闭后立即转到下一个攻击动画,我不想这样做。一旦当前的攻击动画完全完成而不是跳到当前攻击动画中间的下一帧,我怎样才能进入下一个攻击动画。所以我希望角色完成攻击,如果玩家仍然按下攻击键,它将进入下一个攻击帧,否则它将停止。这就是我到目前为止所做的事情

package 
{
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.ui.Keyboard;

    public class Player extends MovieClip
    {
        //Attack variables
        var Attacking:Boolean = false;
        var Punches:int = 0;
        var Punching:Boolean = false;

        public function Player()
        {
            stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyPressed);
            addEventListener(Event.ENTER_FRAME,Update);
        }

        function KeyPressed(event:KeyboardEvent):void
        {
            //Note: I need these listeners here
            stage.removeEventListener(KeyboardEvent.KEY_DOWN, KeyPressed);
            stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp);

                //If A key is down
                if (event.keyCode == 65)
                {
                    Attacking = true;
                    Punching = true;
                    Punches++;
                }
        }

        function Update(event:Event)
        {
            //If player is not attacking
            if (Attacking == false)
            {
                Punching = false;
                Punches = 0;
            }   
            else if (Attacking == true)
            {

                if (Punching == true)
                {
                    gotoAndStop('Jab' + Punches);
                }
            }

        }


        function KeyUp(event:KeyboardEvent)
        {
            stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyPressed);

        }
    }
}

同样在我放下的每个攻击动画的最后一帧内

import flash.display.MovieClip;
import flash.events.Event;

stop();
MovieClip(parent).Attacking = false;
MovieClip(parent).Punches = 0;

不确定这种方法是否是解决它的最佳方法,或者我应该创建扩展类/数组,如果是这样我将如何做到这一点

1 个答案:

答案 0 :(得分:0)

更改

            if (Punching == true)
            {
                gotoAndStop('Jab' + Punches);
            }

            if (Punching && !Attacking)
            {
                gotoAndStop('Jab' + Punches);
            }

所以基本上,它会确保动画在播放(重新)动画之前还没有播放。

编辑:即使您仍在该帧上调用gotoAndStop,它也会重播任何子MovieClips的动画。