我正在制作一个游戏,其中显示杀死敌人的反应时间并在以后的计算中使用。这个数字需要精确,几秒钟内,有三位有效数字。所以我需要将计时器的当前值转换为数值。
我拥有它所以敌人产生,一个计时器(reactionTimer)事件开始,当它被杀死时,一个变量(reactionTime)将被设置为reactionTimer。
然后生成一个新的,它会重置计时器和变量。
我已经尝试了几次,但它总是最终将计时器值显示为“对象计时器”或0。
我也尝试过使用currentCount
,但这并没有给我十进制数字,只是奇怪的工作。
答案 0 :(得分:3)
新的ActionScript开发人员经常混淆Timer
class和TimerEvent
的目的。它实际上是在特定时间触发操作,而不是测量时间。
要测量时间,请使用getTimer
function。无论何时调用它,它都会返回自Flash播放器启动以来经过的毫秒数。要测量经过的时间,您只需拨打getTimer()
两次,然后从第二次测量中减去第一次测量。
有很多方法可以组织您的特定情况。一种方法是将敌人的生成时间戳存储在敌人类中,捕获构造函数:
public class Enemy extends MovieClip {
public function get spawnTime():int { return _spawnTime; }
private var _spawnTime:int;
// Constructor
public function Enemy() {
super();
_spawnTime = getTimer();
}
}
然后当敌人被杀时,再次致电getTimer()
以获得反应时间:
// Somewhere, where you are processing the enemy killed event
var killTime:int = getTimer();
var reactionTime:int = killTime - killedEnemy.spawnTime; // in whole ms
var reactionSeconds:Number = reactionTime / 1000; // in seconds