ここに行く
UPキーとDOWNキーを使用する
キーを押すと、赤いボックスが下に移動し、一時停止して、残りを移動します。
一時停止を解除するにはどうすればよいですか?
パドルをよりスムーズに動かすために、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;
});
キーを少し長く押したときに複数の文字を入力できないようにするのは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;
、実際には意味のあることは何もしません...
実際に行うべきことは、keydown
and keyupevents
を使用して、ゲームで実行することになっていること(つまり、移動を開始および停止すること)を実行することです。
現在地を更新するには、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();
}