0

ミリ秒 (0 ~ 10 秒) としてカウントされる乱数を生成する JavaScript が少しあります。

それに加えて、メソッドを使用して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();

そして、現在の showresult (どちらが間違っているか:-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

ランダム時間ジェネレーターは* 1000、ランダム時間が丸められた後に発生するため、1 秒から 100 秒までの値を提供しています。あなたはおそらく欲しい:

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 に答える