我希望我能解释清楚。但在我的游戏中,我的子弹Movieclip有3个关键帧。 1显示其正常状态。 2表示Blown Up,3表示将其从舞台上移除。共3帧。当子弹击中一个物体时,我会去玩第二帧。然后当第3帧命中时,我将其删除。这是我的代码
private function blowUp():void
{
if(dead)
{
gotoAndPlay(2);
if(currentFrame == 3)
{
garbage = true;
}
}
}
我的问题是第2帧,但从未到达第3帧。所以第3帧不能垃圾收集子弹。如果我使用Play()然后它可以工作,但是gotoAndPlay不会
我甚至尝试从第3帧移除关键帧(它仍然是一个帧)。 (希望它会发挥作用)但它没有。我知道我的问题很愚蠢,所以如果有人能提供帮助,那就太棒了。感谢
答案 0 :(得分: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);
}
}
}
答案 1 :(得分:0)
您必须添加一个输入框架事件处理程序。尝试跟踪currentFrame,你正在做逻辑,看它是否== 3.我的猜测是它的值是2。另一种选择是从第3帧调用一个函数来进行适当的清理。
答案 2 :(得分:0)
注意Flash Player 9中的错误,其中gotoAndPlay(x)将播放帧“x”两次。