17

ボタンでマウスダウンが発生すると、最初はマウスクリックのように応答し、次にユーザーがボタンを押し続けると、ユーザーがマウスクリックを継続的に送信しているかのように応答し、しばらくするとボタンを押したままにすると、ユーザーがマウスクリックを加速したかのように機能します...基本的には、時間の経過とともに加速するキープレスの繰り返しのように考えてください。
つまり、ユーザーがマウス ボタンを押したままにします (x=関数呼び出し) - x___x___x___x__x__x_x_x_x_xxxxxxx

4

7 に答える 7

19
function holdit(btn, action, start, speedup) {
    var t;

    var repeat = function () {
        action();
        t = setTimeout(repeat, start);
        start = start / speedup;
    }

    btn.mousedown = function() {
        repeat();
    }

    btn.mouseup = function () {
        clearTimeout(t);
    }
};

/* to use */
holdit(btn, function () { }, 1000, 2); /* x..1000ms..x..500ms..x..250ms..x */
于 2008-09-17T04:25:29.390 に答える
4

ボタンを押したら、window.setTimeout目的の時間と機能で呼び出し、時間xの終わりにタイマーを再設定しますxが、今回は間隔を短くします。

window.clearTimeoutマウスボタンを離したときに使用してタイムアウトをクリアします。

于 2008-09-17T03:58:57.270 に答える
2

以下の toggleOn を OnMouseDown に、toggleOff をボタンの OnMouseUp に配置するだけです。

var tid = 0;
var speed = 100;

function toggleOn(){
    if(tid==0){
        tid=setInterval('ThingToDo()',speed);
    }
}
function toggleOff(){
    if(tid!=0){
        clearInterval(tid);
        tid=0;
    }
}
function ThingToDo{

}
于 2008-09-17T04:10:38.677 に答える
-1

以下の疑似コードのようなものが機能する可能性があります。

var isClicked = false;
var clickCounter = 100;
function fnTrackClick(){
   if(isClicked){
      clickCounter--;
      setTimeout(clickCounter * 100, fnTrackClick);
   }
}

<input type="button" value="blah" onmousedown="isClicked=true;" onmouseover="fnTrackClick();" onmouseup="isClicked = false;" />
于 2008-09-17T04:04:17.350 に答える