【发布时间】:2013-08-30 20:33:07
【问题描述】:
我创建了一个基于其他人的 Chrome 实验的 jQuery 插件,该插件将一个画布元素插入到您的目标元素中,并在画布中绘制一个交互式星空。
每次调整窗口大小时,canvas 元素都会被移除然后恢复,以使其大小与其父元素匹配,并且所有内容都可以正常动画;它反应灵敏。
但是,每当它恢复时,动画的速度就会增加。为什么这样做?我认为所有变量(包括速度)都使用 this.start() 方法重置为默认值。
您可以在CodePen 上查看代码(和演示);你也可以在 Github 上 fork 它,虽然我认为 Github 版本是我自己的几个提交。
(另外,这是我的第一个真正的 jQuery 插件,所以如果您发现任何问题,请务必告诉我。)
有什么线索吗?
【问题讨论】:
-
也许老动画还在。在激活新的
animate函数之前尝试使用.stop() -
没有 .animate() 到 .stop()。
-
思路是一样的。您是否一次又一次地打电话给您的
anim(),让一切都发生多次? -
可能是当窗口从 100 - 120 增加时,即增加了 20%,因此星速增加了 20%,但是当它从 120 - 100 增加时。它被计算为窗口大小减少了 16.67%,因此您回到了相同的窗口大小,但您的星速并没有因为它计算事物的角度而按比例减少?
-
嗯。 @Itay 是的,使用 requestAnimationFrame 和 setTimeout 后备。但是,当我在 reset() 方法中调用 cancelAnimationFrame 时,没有区别...
标签: javascript jquery html animation canvas