基于时间的游戏的倒数计时器

时间:2013-04-25 21:58:53

标签: actionscript-3 flash flash-cs6

我有一个游戏,目标是拍摄尽可能多的(随机生成的)敌舰,但我想添加一个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而不会下降。

我现在拥有的:

1 个答案:

答案 0 :(得分: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
}

此代码工作正常,您需要按照updateTime函数注释建议:

//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);

}

我也添加了一个跟踪,所以你可以看到它确实每秒都在更新。