我正在制作一个网络游戏(不是用webGL,而是用html元素),我需要用WaSD键移动角色.
-
使用事件侦听器keydown和keydup.
-
使用设置间隔(20ms)和事件侦听器.
keyDict = {}
document.addEventListener('keydown', key => keyDict[key.code] = true);
document.addEventListener('keyup', key => keyDict[key.code] = false);
moveID = setInterval(move, 20)
function move()
{
if(!finished)
{
newDirs = [0,0]
//Left
if(keyDict.ArrowLeft == true)
{
newDirs[0] -= 1;
}
//Right
if(keyDict.ArrowRight == true)
{
newDirs[0] += 1;
}
//Up
if(keyDict.ArrowUp == true)
{
newDirs[1] -= 1;
}
//Down
if(keyDict.ArrowDown == true)
{
newDirs[1] += 1;
}
map.updateDir(newDirs);
}
}
- 使用requestAnimationFrame和事件侦听器.
keyDict = {}
document.addEventListener('keydown', key => keyDict[key.code] = true);
document.addEventListener('keyup', key => keyDict[key.code] = false);
requestAnimationsFrame(move)
function move()
{
same code...
requestAnimationFrame(move)
}
我想让它react 灵敏,非常流畅,我知道有办法,但不知道怎么做.例如鼠标,你的笔记本电脑不会因为滚动而工作(例如,用鼠标移动谷歌 map 是平滑的,并且不需要太多cpu).