繁体   English   中英

AS3键按下会导致动画错误

[英]AS3 key presses cause animation error

我正在制作游戏,基本上我在动画状态方面遇到了一些错误。

    public function movementChar()
    {
        if (touchingGround)
        {
            if (rightKey)
            {
                gotoAndStop("run");
                scaleX = 1;

            }
            if (leftKey)
            {
                gotoAndStop("run");
                scaleX = -1;
            }
            if (upKey)
            {
                gotoAndStop("jump");
                this.y -= 15;
                //touchingGround = false;
            }
            if (attackKey)
            {
                gotoAndStop("attack");
            }
            if (!rightKey && !leftKey && !upKey && !attackKey)
            {
                gotoAndStop("stop");
            }
        }

    }       

我有一些其他的编码说,如果玩家正在触地,那么touchGround = true;

如果它是真的那么玩家可以向右,向左,跳跃和攻击。

问题是,当我按下攻击键时,它会继续循环动画并进行攻击。

我希望攻击键一次播放动画,并使布尔值为hasAttacked = true; 一旦。

另一个问题是,当玩家移动并且按下/按住攻击键时,动画会冻结。 Flash会对要播放的动画感到困惑,因此它会在第1帧停止并出现故障。

如果有人能给我一个如何解决这个问题的想法,我将不胜感激。

谢谢。

我的当前机器上没有我的flash dev东西,所以我无法打开fla但是:
我怀疑这是因为没有“消耗”关键事件。 也就是说你可能正在设置keyKey,leftKey,attackKey等关键字和按键事件并在更新功能期间检查状态?
这样做的问题在于,每次更新都会像第一次按键一样,每次都需要一些方法知道按键已被处理。
正如我所说,我无法检查你的fla,所以我不能评论最好的方法,但我怀疑你可能必须大幅改变你的输入处理。

好的,我有一些建议。 首先让我们解决你的攻击动画正在循环的事实。 您将需要进入SirTimmyAttack movieclip时间轴并添加

stop();

在第4帧中,以防止动画永远循环。 完成后,动画将播放一次。 当你告诉他攻击时你有一个计时器,在计时器执行后他会再次攻击。 因此,如果您按住“A”键,他将会攻击...等待计时器... ATTACK ...等待计时器.... ATT等。 如果你希望他每按一次“A”键就只能攻击一次,取出那个计时器,永远不要启动它。

为了解决你对玩家无法同时攻击和行走的第二个担忧。 这是您当前动画制作方式的技术限制。 由于玩家整个动画都包含在一组帧中,因此您无法混合和匹配它们。 我建议将你的播放器图形/动画分成两半。 上身和下半身。 这样,您可以独立于上身/攻击动画触发步行/跑步/站立动画。

希望这有帮助,如果您有任何其他问题,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM