限制为每秒两个键盘输入
Restrict to two keyboard inputs per second
我正在尝试用HTML5 Canvas制作一个简单的游戏。我想要的是,每秒最多两个键盘输入。
这是我迄今为止的代码:
function move( x, y, r ) {
var canid=document.getElementById("draw");
canid.addEventListener('keydown',readkey,false);
function readkey(e) {
if(e.keyCode == 37) {
clearField();
x = x-draw.width / 10;
redrawpic(x,y,r);
}
else if(e.keyCode == 38){
clearField();
y = y-draw.height / 10;
redrawpic( x, y, r );
}
//..........etc
}
}
移动功能用于将图片从一个单元格移动到另一个单元格。如何在两次移动之间设置延迟a?
您可以使用时间戳来检查上次事件发生的时间:
function move(x,y,r){
/* your variable declarations*/
var d1 = Date.now();
var d2;
function readkey(e){
d2 = Date.now();
// difference between timestamps needs to be 500ms
if(d2-d1 > 500){
// set old Timestamp to new one
d1 = d2;
/*
Rest of your code
*/
}
这允许每500毫秒发生一次关键事件。与1秒内发生2个事件不同(可能在50毫秒内发生,然后暂停950毫秒),但可能足够近?
超时/间隔也是可能的,但我个人不喜欢连续(可能是不必要的)超时调用的开销。
var throttle = false;
function readkey(e) {
if (throttle)
return;
throttle = true;
setTimeout(function () { throttle = false; }, 500);
/* the rest of your code */
500ms是每秒两个输入,但它们是单独节流的。你也可以统计一秒钟内有多少输入。类似的东西
if (throttle > 1)
return;
throttle++;
setTimeout(function () { throttle = 0; }, 1000);
相关文章:
- JQuery合并了keyup和focusout两个函数
- 如何使用 node.js 比较两个 json 数组
- 为复选框javascript指定两个值
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 单击时切换两个图像
- 我可以'我似乎不知道如何修复javascript中的两个lint.有人能帮我理解吗
- 基于两个条件退出While循环
- 如何在这里将两个值最低的数字相加
- 组合两个javascript函数
- 如何使用offer/answer交换来自两个对等连接的流
- jsf中两个字符串的颜色代码差异
- 加载两个具有相同父密钥名称的json文件
- 在Qualtrics中,介绍如何动态连接两个滑块
- 访问$.ajax()函数中的两个不同数组
- 如何在three.js上添加两个向量
- 如何在datetimepicker中使用两个验证器
- 检测javascript中的两个键盘按钮
- 有没有办法找出两个键盘键之间的距离
- 限制为每秒两个键盘输入
- 如何为一个对象管理两个键盘事件处理程序