Как сбросить переменную Flash игры CS6 AS3

Я кодирую флеш-игру, в которой мяч попадает в объект клипа, и это переводит пользователя на новую сцену.

это работает нормально, но когда я возвращаюсь к игровой сцене, мяч движется в два раза быстрее.

Как/где сбросить переменные при возвращении в игру. Ниже показано, как я устанавливаю переменные в данный момент.

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

Любая помощь будет принята с благодарностью. Спасибо.

РЕДАКТИРОВАТЬ**************< /em>***************< /em>***********

Итак, я думаю, что я довольно плохо сформулировал этот вопрос, вот мой соответствующий код:

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 для проверки (см. комментарии ниже), но это не сработало...

Любая помощь будет принята с благодарностью. Спасибо.


person user1982108    schedule 18.01.2013    source источник


Ответы (2)


Ну, это полностью зависит от того, как написана ваша игра и как вы ожидаете, что она будет работать.

Для вашей конкретной проблемы это так же просто, как сделать это when the ball hits a movie clip:

XSpeed = 9;
YSpeed = 9;
person Marty    schedule 18.01.2013

Это звучит как этот вопрос. Проблема заключалась в том, что прослушиватель событий снова добавлялся при перезапуске игры, из-за чего игровой цикл срабатывал в два раза чаще (и все происходило в два раза быстрее).

Вам нужно будет либо удалить прослушиватель, когда игра закончится, либо добавить проверку, чтобы убедиться, что он добавлен только один раз.

person David Mear    schedule 18.01.2013
comment
if(Ball2.hasEventListener(Event.ENTER_FRAME)) Ball2.removeEventListener(Event.ENTER_FRAME, moveBall2); еще Ball2.addEventListener(Event.ENTER_FRAME, moveBall2); - person user1982108; 18.01.2013
comment
Один из способов сделать это — addEventListener(Event.REMOVED_FROM_STAGE, cleanup), и в вашей функции cleanup удалите прослушиватель событий, который срабатывает дважды. - person Amy Blankenship; 18.01.2013