6

ここに行く

UPキーとDOWNキーを使用する

キーを押すと、赤いボックスが下に移動し、一時停止して、残りを移動します。

一時停止を解除するにはどうすればよいですか?

4

3 に答える 3

6

パドルをよりスムーズに動かすために、keydown同様にフォローし、インターバルを使用する必要があります。keyup

デモ: http: //jsfiddle.net/M7TKc/16/

var paddle = $("#paddle");
paddle.css({backgroundColor: "red", height:"100px", width:"25px", position: "absolute"});

var paddle_y = 0,
    moving = 0;  /* added */

draw_paddle();

window.setInterval(function () {  /* added */
    if (moving != 0) {
        paddle_y += moving;
        draw_paddle();
    }}, 100);

function move_down(){
    moving = -10;
}
function move_up(){
    moving = 10;
}

function draw_paddle(){
    paddle.css({top: paddle_y+"px"});
}

$(document).keypress(function(e) {
    if(e.which == 13) {
        // stop on "ENTER"
        moving = 0;
    }
});
$(document).keydown(function(e){  /* changed */
    if (e.keyCode == 38)
        move_down();
    else if (e.keyCode == 40)
        move_up();

});

$(document).keyup(function(e){  /* added */
    if (e.keyCode == 38 || e.keyCode == 40)
        moving = 0;
});
于 2012-06-12T13:11:12.740 に答える
2

キーを少し長く押したときに複数の文字を入力できないようにするのはOSのキーボード設定に依存するため、できません。

PS:監視するキーごとに1つのイベントを登録しないでください。代わりにこれを行ってください:

$(document).keydown(function(e){
    if (e.keyCode == 38) { 
        move_down();
        return true;
    } else if (e.keyCode == 40) { 
        move_up();
        return true;
    }
});​

そしてreturn true;、実際には意味のあることは何もしません...

実際に行うべきことは、keydownand keyupeventsを使用して、ゲームで実行することになっていること(つまり、移動を開始および停止すること)を実行することです。

于 2012-06-12T12:57:37.407 に答える
1

現在地を更新するには、setInterval更新関数を使用する必要があります。キーアップおよびキーダウン機能は、パドルを上下に動かすフラグを設定します。デモ: http: //jsfiddle.net/DH5qT/

    var movedir = 0; // up if 1, down if -1, none if = 0.
    var interval = setInterval(function(){
        paddle_y = paddle_y + (5 * movedir);
        draw_paddle();
    } , 1);

    function move_down(){
        movedir = -1;
        draw_paddle();
    }
    function move_up(){
        movedir = 1;
        draw_paddle();
    }
于 2012-06-12T13:21:57.317 に答える