2013-04-25 78 views
0

我有一個遊戲,其目標是儘可能多地(隨機生成)敵人的船隻拍攝,但我想添加一個30秒的計時器倒計時到零,以添加時間限制,但我不確定我會怎麼做?我有幾個AS文件,所有代碼都以不同的速度生成不同大小的船隻,所以如果需要代碼片段,我會添加它們。基於時間的遊戲倒數計時器

我試圖做這種方式並沒有奏效:

var gameTime:Number = 30; 
var gameTimer:Timer; 
static var timeText:TextField = new TextField(); 

timeText = new TextField(); 
timeText.x = 560; 
timeText.y = 0; 
timeText.text = gameTime.toString(); 
addChild(timeText); 

gameTimer = new Timer(30000, gameTime); 
gameTimer.addEventListener(TimerEvent.TIMER, gameTimeCount); 
gameTimer.start(); 

function gameTimeCount(e:TimerEvent):void 
{ 
    gameTime--; 
    timeText.text = gameTime.toString(); 
} 

但數停留在30,並且不下去。

我現在擁有的一切:

+0

你有你的計時器設置爲30000毫秒每刻度。這是30秒。你想要1000,這是1秒。這就是你應該更新的頻率。 – prototypical 2013-04-25 22:17:04

+0

您並未更新您的timeHeader。我在'updateTime'處理程序中評論過// //根據需要更新您的用戶界面。嘗試將該行添加到該處理程序 - 'timeHeader.text =「Time:」+ String(gameTime);' - 它適用於我。 – prototypical 2013-04-26 15:30:14

+0

我只是剪切/粘貼上面的代碼,並且它完美無瑕。你的頁面有多寬?是否有可能讓textfield timeText離開舞臺?你的舞臺的寬度是多少? – prototypical 2013-04-26 18:27:26

回答

0

這裏是你可以做到這一點的一種方法:

// in class variable declarations 
public var gameTime:int; 
public var levelDuration:int; 

// where you want to start it 
levelDuration = 30; 
gameTime = levelDuration; 
var gameTimer:Timer = new Timer(1000,levelDuration); 
gameTimer.addEventListener(TimerEvent.TIMER, updateTime); 
gameTimer.addEventListener(TimerEvent.TIMER_COMPLETE, timeExpired) 
gameTimer.start(); 


function updateTime(e:TimerEvent):void 
{ 
    // your class variable tracking each second, 
    gameTime--; 
    //update your user interface as needed 

} 

function timeExpired(e:TimerEvent):void 
{ 
    var gameTimer:Timer = e.target as Timer; 
    gameTimer.removeEventListener(TimerEvent.TIMER, updateTime) 
    gameTimer.removeEventListener(TimerEvent.TIMER, timeExpired) 

    // do whatever you need to do for game over 
} 

此代碼工作就好了,你需要做的錄入功能意見建議:

//update your user interface as needed

根據你在你的文章中的代碼,你需要調整該功能看起來像這樣:

function updateTime(e:TimerEvent):void 
{ 
    trace(gameTime); 
    // your class variable tracking each second, 
    gameTime--; 
    //update your user interface as needed 
    timeHeader.text = "Time : " + String(gameTime); 

} 

我也添加了一個跟蹤,所以你可以看到它確實每秒更新一次。

+0

我編輯了我的問題,以顯示我試過的東西 – David 2013-04-25 22:10:28

+0

我編輯了這個倒計時。不知道我還能如何幫助你,這將起作用。 – prototypical 2013-04-25 22:15:44

+0

已更新的答案在您的遊戲中使用gameTime。我誤解了,並認爲你想追蹤已過期的秒數。 – prototypical 2013-04-25 22:20:18