需求是最简单的一个操作,就是方向键控制 canvas 里一个方块的移动,因为地图是有方格的,要求是每次移动一个方格。
一开始我就是监听方向键 keydown,有按下就直接修改坐标,+-一个方格的大小,然后重新画
这种方案的问题就是长按方向键会有问题,有一个滞后性,第一次触发 keydown 后得延迟一段时间后才会触发第二次,所以长按跑起来卡卡的
解决这个问题,网上查的方案就是监听 keydown 和 keyup,基本能解决大部分问题,像这个 https://jsfiddle.net/5uLsax34/1/
但是现在问题是我希望能按方格移动,每次移动一个方格的大小,但是现在这种写法不知道要怎么控制
解决了,在keyup事件里把坐标处理一下,比如Math.round(x/width)*x