按下键在第一次按键和随后的按键后暂停
Keydown pauses after first keyress, and subsequent keypresses
转到此处
使用向上和向下键
当我按下一个键时,红色框向下移动,暂停,然后移动其余部分。
如何消除暂停?
您应该遵循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;
});
您不能,因为它取决于操作系统键盘设置,以防止在键的长按压下键入多个字母。
PS:不要为要监视的每个密钥注册一个事件。请改为执行以下操作:
$(document).keydown(function(e){
if (e.keyCode == 38) {
move_down();
return true;
} else if (e.keyCode == 40) {
move_up();
return true;
}
});
而且return true;
实际上并没有做任何有意义的事情......
你实际上应该做的是使用keydown
和键控events
来做他们在游戏中应该做的事情(我认为是这样),即开始和停止运动。
您应该使用 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();
}
相关文章:
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- 删除确认对话框在第一次单击时不起作用
- Javascript:JSON请求仅在第一次工作
- 推特引导:弹出窗口不会在第一次点击时出现,但会在第二次点击时显示
- 角度提交仅进行第一次v2错误
- 设置第一次执行的超时
- 为第一次尝试Javascript的经验丰富的开发人员提供建议
- jQuery on()-不;第一次点击时无法工作
- 第一次点击动态创建的表后,点击不工作
- 在Rails中第一次单击后禁用链接,Coffeescription
- PHP和JS脚本的奇怪问题,在我刷新页面之前第一次失败
- 循环中的切换脚本只适用于第一次迭代
- 在没有焦点的情况下捕获画布上的第一次单击事件
- Javascript onclick事件在第一次单击时未启动
- 让jqGrid第一次工作
- addClass,它更改bg图像,但在第一次加载时没有闪烁
- Cordova AngularJS Ionic标签的内容在第一次加载时重叠
- show-hide只在ajax调用中第一次工作
- 修改body's在第一次绘画前上课
- 按下键在第一次按键和随后的按键后暂停