1

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

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

然后产生一个新的并重置计时器和变量。

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

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

4

1 回答 1

3

新的 ActionScript 开发人员经常混淆了Timer的目的和TimerEvent. 它实际上是为了在特定时间触发动作,而不是为了测量时间。

要测量时间,请使用getTimer函数。无论何时调用它,它都会返回自 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
于 2012-09-19T13:08:26.610 回答