Javascript 如何使函数调用更快
我正在做一个乒乓球游戏,希望我有一个工作功能,可以上下移动球拍。我想调用这个函数的频率比调用它的频率要高。拨片移动太慢,我不想在每次调用该函数时增加拨片移动量,因为这会使其“起伏” 我试着使用一个设定的间隔,但不幸的是,我只是得到了一个错误Javascript 如何使函数调用更快,javascript,function,Javascript,Function,我正在做一个乒乓球游戏,希望我有一个工作功能,可以上下移动球拍。我想调用这个函数的频率比调用它的频率要高。拨片移动太慢,我不想在每次调用该函数时增加拨片移动量,因为这会使其“起伏” 我试着使用一个设定的间隔,但不幸的是,我只是得到了一个错误 document.body.addEventListener("keypress", function(e) { getWasdKey(e); }); function getWasdKey(e){ var key = e.keyCode;
document.body.addEventListener("keypress", function(e) {
getWasdKey(e);
});
function getWasdKey(e){
var key = e.keyCode;
if(key == 119){//w key
leftUp();//up
}
if(key == 115){//s key
leftDown();//down
}
if(key == 107){//k key
rightUp();//up
}
if(key == 109){//m key
rightDown();//down
}
}
var x = 1;
function leftUp(){
setStyle('paddlewasd', 'top', (parseInt(getStyle('paddlewasd', 'top'))) - x + "px");
}
function leftDown(){
setStyle('paddlewasd', 'top', (parseInt(getStyle('paddlewasd', 'top'))) + x + "px");
}
function rightUp(){
setStyle('paddlearrow', 'top', (parseInt(getStyle('paddlearrow', 'top'))) - x + "px");
}
function rightDown(){
setStyle('paddlearrow', 'top', (parseInt(getStyle('paddlearrow', 'top'))) + x + "px");
}
作为补充说明,我创建了一个setStyle函数来帮助我的代码更好地工作。它工作正常,以前也有过。它需要3个参数,id,css属性,以及您想要设置的内容。Get style只是前两个参数 您目前依赖键盘的重复频率,不同系统的重复频率可能不同 我建议您不要监听按键事件,而是使用创建一个游戏循环,并在该循环中检查键盘的当前状态并做出相应的反应 编辑:这里有一个极简主义的例子,演示如何做到这一点
const keyState = {};
window.addEventListener('keydown', function (e) {
keyState[e.keyCode] = true;
});
window.addEventListener('keyup', function (e) {
keyState[e.keyCode] = false;
});
function frameLoop () {
requestAnimationFrame(frameLoop);
if (keyState[KEYCODE]) {
// Do something
}
}
requestAnimationFrame(frameLoop);
setInterval
将在定期间隔后隐式调用函数,我想这不是您要寻找的过程,因为您正在捕获按键事件。按键事件只会经常发生。您可以在按键时运行一个间隔,在未按键时取消此间隔,并使用此间隔设置样式。我建议您修改transform
属性,而不是top
。每次更改top
,浏览器都必须重新流式显示文档,这会导致动画速度缓慢且滞后。如果您将transform
与translate3d
一起使用,您的移动将更加平滑。