【发布时间】:2011-02-02 10:24:10
【问题描述】:
我在 Raphael 中制作动画,其中涉及从 div 中出现的几条二次贝塞尔线,并沿着通往几个子元素的路径制作动画。我希望通往每个子元素的曲线能够一点一点地绘制自己,直到它们到达最后一点。我解决这个问题的方法如下:
1) 为整个动画创建一个中心线程
2) 在每一帧中,将一个变量 currentLength 增加一定的量
3) 在每一帧中,使用getPointAtLength找到每条曲线的当前点
4) 在每一帧中,移动一个小点到这一点
5) 在每一帧中,lineTo 小点的新位置 - 直线,但有足够多的帧,最终结果仍然看起来不错,呈二次曲线和曲线
这一切都像一个绝对的魅力,除了一件事 - getPointAtLength 似乎很慢。我已经尝试了 10 种不同的方法来解决这个问题,而上述解决方案是我迄今为止提出的最快的解决方案。它们都可以工作 - 但是包含 getPointAtLength 让它太慢了。将 animateAlong 与一个点一起使用,然后将 lineTo 与该点的坐标一起使用并不会好太多,首先因为它创建的线程数与子节点的数量一样多,而且它并没有快多少。
请帮忙!阅读我的信息,了解它,帮助我找到解决方案! getPointAtLength 似乎 waaaaaaaaaaaay 太慢了 - 每帧调用一次,共 40 帧,共 7 行,这会使一切变得缓慢。任何帮助将不胜感激。
【问题讨论】:
标签: javascript animation svg raphael bezier