2013-01-18 81 views
0

我正在編寫一個Flash遊戲,其中的球擊中一個影片剪輯對象,並將用戶帶到一個新的場景。如何重置變量Flash遊戲CS6 AS3

這工作得很好,但是當我返回到遊戲場景中的球移動速度的兩倍。

如何/我在哪裏可以返回到遊戲時重置變量。 對我如何,此刻

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

嗯,這完全取決於它如何你的遊戲寫入,以及如何預期運行。

爲您的特定問題,這是因爲這樣做when the ball hits a movie clip簡單:

XSpeed = 9; 
YSpeed = 9; 
0

這聽起來像this question。問題在於,當遊戲重新啓動時,會再次添加事件監聽器,使遊戲循環觸發兩次(並且所有事情發生的速度都是原來的兩倍)。

你要麼需要在遊戲結束時刪除監聽器,或添加檢查,以確保它是隻加一次。

+0

如果(Ball2.hasEventListener(Event.ENTER_FRAME)) Ball2.removeEventListener(Event.ENTER_FRAME,moveBall2); \t別的 \t Ball2.addEventListener(Event.ENTER_FRAME,moveBall2); – user1982108

+0

嘗試了上面的代碼,但它沒有幫助...任何想法? – user1982108

+0

執行此操作的一種方法是'addEventListener(Event.REMOVED_FROM_STAGE,cleanup)',並在''cleanup''函數中刪除正在被觸發兩次的事件偵聽器。 –