我有一个游戏,目标是拍摄尽可能多的(随机生成的)敌舰,但我想添加一个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 :(得分: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);
}
我也添加了一个跟踪,所以你可以看到它确实每秒都在更新。