画布动画帧渲染:无限循环与在mousemover上触发()

时间:2014-07-29 12:23:21

标签: javascript html5 animation

好的,这是一个非常理论化的问题: 我用HTML5 canvas元素编写动画。动画取决于鼠标移动(当鼠标停留=没有动画时)。对于渲染,我看到以下选项:

  • 选项1:不断重绘画布的循环(鼠标移动与否)
  • 选项2:通过mousemove()事件(使用jQuery)触发绘图功能

我倾向于支持选项2,因为只在需要时才会进行渲染。但我担心一件事:如果鼠标移动得太快(特别是在较慢的机器上),迭代可能会重叠并弄乱画布(请参阅下面的插图)。

所以我想到了一个解决方法:

  • 选项3:使用选项2,但是如果当前已经执行了绘制迭代,则检查每个触发器。如果是,则忽略触发器。

但我也可以在这里看到一些问题:在我的插图中,鼠标移动的最后一帧可能被遗漏(因为它与之前的调用重叠)。此外,不断检查可能会降低性能(选项1中不需要)。

那么哪个选项最好?有人有这方面的经验吗?

链接到插图(无法发布图片):http://i.stack.imgur.com/WHLDQ.png

2 个答案:

答案 0 :(得分:0)

我会选择2.选项1只是浪费资源。 不要担心选项2重叠迭代。当前一个事件仍在运行时,DOM不会调用mousemove事件。

答案 1 :(得分:0)

我使用两者的组合。

我有2个全局变量(mousex,mousey) 我在mousemove上更新这些

我有一个绘制循环,开始加载并重复每隔n秒

编辑:想法是分割视觉和工作代码(碰撞,得分......)

绘图循环每2秒触发一次,同时每次移动时都会更新鼠标移动

- 循环设置得那么慢,因为它显示了差异 例如:     jsfiddle.net / 9jW3d /显示/``