如何将计时器事件的值转换为数字?

时间:2012-09-19 10:45:13

标签: actionscript-3 timer

我正在制作一个游戏,其中显示杀死敌人的反应时间并在以后的计算中使用。这个数字需要精确,几秒钟内,有三位有效数字。所以我需要将计时器的当前值转换为数值。

我拥有它所以敌人产生,一个计时器(reactionTimer)事件开始,当它被杀死时,一个变量(reactionTime)将被设置为reactionTimer。

然后生成一个新的,它会重置计时器和变量。

我已经尝试了几次,但它总是最终将计时器值显示为“对象计时器”或0。

我也尝试过使用currentCount,但这并没有给我十进制数字,只是奇怪的工作。

1 个答案:

答案 0 :(得分:3)

新的ActionScript开发人员经常混淆Timer classTimerEvent的目的。它实际上是在特定时间触发操作,而不是测量时间。

要测量时间,请使用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