0

我正在编写一个 Flash 游戏,其中球击中一个影片剪辑对象,这会将用户带到一个新场景。

这很好用,但是当我回到游戏场景时,球的移动速度是原来的两倍。

返回游戏时如何/在哪里重置变量。请参阅下文了解我目前如何设置变量

var XSpeed:Number = 9;
var YSpeed:Number = 9;

任何帮助将不胜感激。谢谢。

编辑* * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * **

好的,所以我认为我对这个问题的表述非常糟糕,这是我的相关代码:

var XSpeed:Number = 9; //X Speed of the Ball
var YSpeed:Number = 9; //Y Speed of the Ball


function beginCode():void{

mcPaddle.addEventListener(Event.ENTER_FRAME, movePaddle);

mcBall.addEventListener(Event.ENTER_FRAME, moveBall);

mcBall.addEventListener(Event.ENTER_FRAME, changeFrame);
}

然后在最后调用 beginCode()。如前所述,我认为问题在于事件侦听器已经存在,并且每次用户返回页面时都会再次调用。我试图添加一个 if 语句来检查(见下面的评论)但这没有奏效......

任何帮助将不胜感激。谢谢。

4

2 回答 2

0

这听起来像这个问题。那里的问题是,当游戏重新启动时,再次添加了一个事件侦听器,使游戏循环的触发频率增加了一倍(并且一切都以两倍的速度发生)。

您要么需要在游戏结束时移除监听器,要么添加检查以确保它只添加一次。

于 2013-01-18T01:32:52.270 回答
0

嗯,这完全取决于你的游戏是如何编写的以及你期望它如何工作。

对于您的特定问题,就像这样做一样简单when the ball hits a movie clip

XSpeed = 9;
YSpeed = 9;
于 2013-01-18T01:31:01.053 回答