首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3攻击动画问题

AS3攻击动画问题
EN

Stack Overflow用户
提问于 2013-08-04 07:34:59
回答 1查看 349关注 0票数 0

我正在尝试创建一个击败em的游戏,现在我让我的角色进行攻击。到目前为止,我已经制作了3个攻击动画,效果差不多。如果你一直压住攻击按钮,它就会攻击,但问题是,只要攻击按钮一按下,它就会转到下一个攻击动画,我不想这样。当当前的攻击动画结束后,我如何让它转到下一个攻击动画,而不是跳到当前动画中途的下一帧。所以我希望角色完成它的攻击,如果玩家仍然输入攻击键,它将转到下一个攻击帧。

代码语言:javascript
复制
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;
        var Kicks:int = 0;
        var Kicking:Boolean = false;

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

        function KeyPressed(event:KeyboardEvent):void
        {
            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;
                Kicking = false;
                Kicks = 0;
            }   
            else if (Attacking == true)
            {

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

        }


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

        }
    }
}

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

代码语言:javascript
复制
import flash.display.MovieClip;
import flash.events.Event;

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

回答 1

Stack Overflow用户

发布于 2013-08-04 08:29:54

首先,您应该删除在KeyPressedKeyUp方法中添加和删除的事件侦听器(它们不是必需的,它们只会导致问题),并在构造器中注册key up事件,就像其他两个方法一样。

其次,要实现这一点,您需要检查按键是否按下,而不是监听按键。为此,您需要一个名为holdingAttackKey的新字段。

代码语言:javascript
复制
        var holdingAttackKey:Boolean = false;  



        function KeyPressed(event:KeyboardEvent):void {
            if (event.keyCode == 65)
            {
                holdingAttackKey = true;

                Attacking = true;
                Punching = true;
                //...



    function KeyUp(event:KeyboardEvent)
    {
        holdingAttackKey = false;
    }



    function Update(event:Event)
    {
        if(holdingAttackKey && Attacking==false) {
                Attacking = true;
                Punching = true;
                Punches++;
        }
        //....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18038327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档