我正在开发一款游戏,它允许玩家点击一张卡片并以任意方向将其拖过屏幕。任何时候在 800x800 的画布上总共有 64 张 100x80 重叠的卡片,每张卡片都是程序绘制。正如你们中的一些人可能怀疑的那样,canvas 不喜欢为每一个动作重新绘制整个画布。为了解决这个问题,我使用缓冲画布来绘制卡片,然后尝试使用drawImage()
. 为了确保没有绘图堆积,我清除了与我计划drawImage()
使用clearRect()
.
我遇到的问题是,因为用于clearRect()
和的(x,y)坐标drawImage()
来自鼠标的位置,如果用户移动得太快,坐标将从drawImage()
上次执行的时间到时间clearRect()
不同在下一个绘制序列期间调用。结果是最后一个序列的剩余抽牌 - 与拖动卡片的速度成正比。
我尝试从 中维护 (x,y) 坐标,并在下一个序列中drawImage()
使用这些坐标(而不是当前鼠标位置) 。clearRect()
然而,现在不是显示残余绘制,而是残余我们有残余清除(擦除)。
关于如何解决这个问题的想法?
注意:我的动画速率是使用RequestAnimationFrame
而不是处理的SetInterval()
。