AS3键按下会导致动画错误

时间:2014-04-03 12:41:47

标签: actionscript-3 flash animation

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

    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帧停止并出现故障。

如果有人能告诉我如何解决这个问题,我将不胜感激。

谢谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

stop();

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

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

希望这有帮助,如果您有任何其他问题,请与我联系。