Я использую Date(). GetTime для измерения продолжительности нажатия клавиши путем вычитания события keydown из события keyup. Однако, для нажатия клавиш дольше чем 500 мс, записанное время возвращается к более низкому значению.Дата getTime дает низкие значения для более длительных длительностей
Вот JSFiddle http://jsfiddle.net/bdzaorw2/
$(document).ready(function(){
Crafty.init(window.innerWidth,window.innerHeight);
var player = Crafty.e();
//...
function horizontal(){
if(keyboard[38] && !player.jumping){
player.v.velocity = 5;
player.jumping = true;
}
if(keyboard[38] && player.jumping){
var now = new Date();
if(now.getTime() - keystart[38].getTime() < 500){
player.v.velocity = 5;
}
document.getElementById("p").innerText = now.getTime() - keystart[38].getTime();
}
setTimeout(horizontal, (frame * 1000)/timeMultiplier);
}
horizontal();
document.body.addEventListener("keyup", function (code) {
keyboard[code.keyCode] = false;
});
document.body.addEventListener("keydown", function (code) {
keyboard[code.keyCode] = true;
var then = new Date();
keystart[code.keyCode] = then;
});
});
Это должно, вероятно, комментарий по этому вопросу, а не ответ на свой собственный. – ssube
@ssube достаточно справедливо – risto