【发布时间】:2012-08-08 16:44:35
【问题描述】:
我正在 HTML5 画布中制作几何光学演示,鼠标指向光源,您可以制作一些障碍物,javascript 进行计算并在这些障碍物后面的线上显示光影。
从我在网上找到的那些画布拖放教程中,所有他们都使用setInterval() 来进行鼠标交互,这意味着整个画布都被更新并重新绘制了所有时间。这让我觉得整个画布业务是一个丑陋的黑客。
我的问题是:有没有其他方法可以在没有setInterval() 方式的情况下在canvas 中进行鼠标交互?我想画一次背景,只在onmousemove鼠标实际移动时重画移动部分。
任何想法都值得赞赏。谢谢:)
【问题讨论】:
-
我也将
setInterval()用于带有鼠标交互的画布绘图应用程序。有一个名为requestAnimationFrame的函数,但它基本上是setInterval的增强版,所以可能不是你要找的。span> -
问题是
<canvas>真的很像画布——你不能在上面“取消绘制”。 -
@Pointy:你可以使用两个
<canvas>,一个用于背景,每次清除另一个用于鼠标的东西。 -
@pimvdb 像双缓冲区?
-
@pimvdb 是的,这是真的 - 您还可以在画布上为普通的
<img>元素设置动画。
标签: javascript html canvas setinterval