我正在编写一个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语句来检查(参见下面的评论),但这没有用......
非常感谢任何帮助。感谢。
答案 0 :(得分:0)
嗯,这完全取决于你的游戏是如何编写的,以及你希望它如何运作。
对于您的特定问题,只需执行此操作when the ball hits a movie clip
:
XSpeed = 9;
YSpeed = 9;
答案 1 :(得分:0)
这听起来像this question。问题是当游戏重新启动时再次添加事件监听器,使得游戏循环频繁发生两次(并且所有事情都发生了两倍)。
你需要在游戏结束时删除监听器,或者添加一个检查以确保它只添加一次。