0

我有一点 javascript 会生成一个随机数,以毫秒计(0 到 10 秒之间)。

连同它,我正在使用该getTime()方法来设置一个启动定时器,然后再过一段时间来设置一个停止定时器。

有了这个,我想得到 timedifference( stoptimer-starttimer) 和我随机选择的毫秒之间的毫秒差。

类似于:随机毫秒为 1.3 秒,时差为 1。用户关闭了 0.3 秒。

millisecondsToPress = Math.floor((Math.random()*100)+1)*1000; 
startTime = attempt.getCurrentTime();

稍后会调用 showresult 来停止时间并进行计算

stopTime = attempt.getCurrentTime();
showResult();

这是 getTime 函数:

var d = new Date();
return d.getTime();

现在的显示结果(这是错误的:-p) var secondsPressed = this.stopTime - this.startTime;

if (secondsPressed >= this.millisecondsToPress) {
    //The timedifference is bigger than the toPress. The player overshot!
    result = secondsPressed - this.millisecondsToPress;
} else {
    //The player undershot
    result = this.millisecondsToPress - secondsPressed;
}

我可能对毫秒或其他东西有误(* 1000 或 * 100 等)

4

1 回答 1

1

您的随机时间生成器为您提供 1 到 100 秒之间的值,并且仅以整秒为单位,因为在* 1000随机时间四舍五入之后发生。你可能想要:

var millisecondsToPress = Math.floor(10000 * Math.random());

如果您只关心误差的大小,请使用Math.abs()

result = Math.abs(secondsPressed - this.millisecondsToPress) / 1000.0

与那里的师转换回秒。

要以毫秒为单位获取当前时间的数值,您可以+new Date() 在旧浏览器或Date.now()较新浏览器上使用(后者更有效,因为它不实例化对象)。

于 2013-05-29T13:14:03.813 回答