7

私はゲームパッド API で遊んでいます。特に、コントローラーのジョイスティックを使用する軸です。これらの位置は頻繁に更新されます。そのため、私が聞いているイベント (棒の動き) も頻繁に発生します。ラグを減らすために、たとえば 1 秒間に 25 回に制限する方法はありますか?

4

3 に答える 3

14

JavaScript イベントがトリガーされる頻度を制限することはできませんが、イベント ハンドラーは一部の呼び出しで何もしないことを選択できます。これを使用した例を次に示しmousemoveます (どのゲームパッド API について話しているのかわかりません)。

var lastMove = 0;
document.addEventListener('mousemove', function() {
    // do nothing if last move was less than 40 ms ago
    if(Date.now() - lastMove > 40) {
        // Do stuff
        lastMove = Date.now();
    } 
});

http://jsfiddle.net/jk3Qh/

于 2013-02-02T22:08:49.183 に答える
1

このようなことを行うことができます.1秒間隔でイベントが呼び出される頻度と、それを処理するかどうかを確認します. コードサンプル、私が考えていたことの大まかな概要(保証はありません(そのスペルなど))。

function process_event() {
var curr = new Date().getTime();
if ((curr - timeObj.last) < 1000) { //One Second 
     if (timeObj.counter > 25) {
        for (var x=0;x<timeObj.times;x++) {
             if ((curr - timeObj.times[x]) >= 1000) {
                   timeObj.times.splice(x, 1);
                   timeObj.counter -= 1;
             }
        }
     }
     else { 
         timeObj.counter += 1;
         timeObj.times[timeObj.times.length()-1] = curr;
     }
}
else {
    timeObj.counter = 0;
    timeObj.times = [];
}
if (timeObj.counter > 25) {
    return False
 }  
 else {
   return True
 } 
}
于 2013-02-02T22:19:17.323 に答える
0

イベント リスナーがアクティブになるたびに増加する変数を初期化します。変数が 25 未満の場合にのみ、イベント リスナーが出力する関数が発生するようにします。

于 2013-02-02T22:07:43.453 に答える