在Javascript中获取随机秒和now-then之间的差异

时间:2013-05-29 13:08:06

标签: javascript

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

除此之外,我使用getTime()方法设置开始时间,稍后再使用stoptimer-starttimer方法设置停止时间。

我希望得到时差(millisecondsToPress = Math.floor((Math.random()*100)+1)*1000; startTime = attempt.getCurrentTime(); )和我随机选择的毫秒之间的毫秒差异。

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

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

稍后一个showresult被叫来停止时间并且应该做数学

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

这是getTime函数:

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;
}

现在的showresult(哪个错了:-p) var secondsPressed = this.stopTime - this.startTime;

{{1}}

毫无疑问,毫秒或其他事情(* 1000或* 100等)

1 个答案:

答案 0 :(得分: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()在较新的浏览器上(后者更有效,因为它不实例化对象)。