0

我希望我能很好地解释这一点。但在我的游戏中,我的子弹电影剪辑有 3 个关键帧。1 显示其正常状态。2 显示它被炸毁,3 将其从舞台上移除。一共3帧。当子弹击中一个物体时,我去播放第二帧。然后当第 3 帧命中时,我将其删除。这是我的代码

private function blowUp():void
        {
            if(dead)
            {
                gotoAndPlay(2);
                if(currentFrame == 3)
                {
                    garbage = true;
                }
            }
        }

我的问题是它进入第 2 帧但从未达到第 3 帧。所以第 3 帧不能垃圾收集子弹。如果我改用 Play() 则它可以工作,但 gotoAndPlay 不能

我什至试图从第 3 帧中删除关键帧(它仍然是一个帧)。(希望它会发挥作用)但事实并非如此。我知道我的问题很愚蠢,所以如果有人可以提供帮助,那就太好了。谢谢

4

3 回答 3

2

你确定你不是每帧都调用 blowUp ,所以你一直重置到第 2 帧吗?

如果是这种情况,也许可以尝试放置一个布尔值守卫:

    private var doingBlowUp : Boolean = false;

    private function blowUp() : void
    {
        if (dead) {
            if (doingBlowUp)
            {
                if (currentFrame == 3)
                {
                    garbage = true;
                    doingBlowUp = false;
                }

            } else {
                doingBlowUp = true;
                gotoAndPlay(2);
            }
        }

    }
于 2010-01-16T17:52:00.207 回答
0

注意 Flash Player 9 中的错误,其中 gotoAndPlay(x) 将播放帧“x”两次。

于 2010-01-16T18:00:31.580 回答
0

您必须添加一个输入帧事件处理程序。尝试跟踪您正在执行逻辑的 currentFrame 以查看它是否 == 3。我的猜测是它的值将是 2。另一种选择是从第 3 帧调用一个函数来进行适当的清理。

于 2010-01-16T17:56:38.850 回答