设置1400个Raphael.js对象的不透明度动画会影响动画性能
Animating opacity of 1400 Raphael.js objects hurts animating performance
首先,感谢您的帮助。:)
JSFiddle代码。
JSFiddle全屏
正如你可以从上面的小提琴链接中看到的,我正在为1400个对象设置动画,试图创建一个"闪烁效果"。随着用户移动鼠标的速度越来越快,更多的六边形会突然变为完全不透明度,并具有不同的淡出率。小提琴中的版本用足够的颜色填充了空间,但感觉不连贯和笨拙。如果我减少fade_time变量的数量,它会更平滑,但没有足够的完全不透明度的六边形。最终目标是用六边形拼写单词。
Chrome的性能最好,FireFox和IE的性能较差。我在iPad上的移动游戏中测试了(使用Raphael的element.touchmove),结果更糟。
我正在寻找任何关于哪些代码可以用不同的方式来提高性能的建议。
我看到了别人给出的这个答案,这个答案本应该有助于提高性能,但我正试图根据光标的移动来制作六边形的动画,我不确定用计时器能不能做到这一点。
这个答案提到使用画布:
一个好的选择是使用Canvas来绘制元素。根据我的实验,它在绘制这么多动画时会比SVG更快,尽管如果你使用一些动画,它们将比RaphaelJS库更难实现。
对人们来说,这似乎是一条更好的途径吗,即使有代码正在使用的动画?
这是我第一次使用Raphael.js。一般来说,我对js不是很有经验,所以任何帮助都是神童!
编辑:编辑:此外,看到这个关于.resize被调用的次数比提问者想象的要多的答案,我想知道.mousemoove函数是否会被调用的时间(比我需要的要多)比我预期的要多。
我认为它会阻塞"重叠"动画,例如:
- 6号六边形开始褪色
- 在其褪色一半时,另一个褪色开始
我添加了一条stop()
指令,以避免出现意外结果。
此外,for()循环不会检查是否有另一个动画正在进行,也不会检查某个十六进制是否在循环内被随机选择了两次或两次以上。作为解决方法,我添加了一个向量来缓存正在设置动画的六边形的索引,尽管这似乎没有太大帮助。
要查看它保存了多少(无用的)动画,请取消对最后一个console.log()
的注释。
此外,您的getRandomInt()
函数生成了一些未定义的索引错误(因为您的数组索引从0到1399,并且它返回了0到1400之间的整数……我更改了它。
请在此处查看我的附加组件:http://jsfiddle.net/rz4yY/46/
- 如何设置html元素填充的动画
- 如何使用动画实现纸张推车
- 如何在生成下载文件时显示加载动画
- 剑道网格jQuery动画()问题
- EaseJS拖放;放下(动画CC)电影剪辑的鼠标坐标
- jQuery Lazy加载动画滚动
- jquery动画可以通过编程链接吗
- Javascript将数学动画化
- 动画.CSS重播
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 如何使用jQuery在动画中期加速动画
- 使用数据上的角度更改设置集合的第一个元素的动画
- 设置1400个Raphael.js对象的不透明度动画会影响动画性能
- 来自多个源的 jQuery 动画 - 影响多个对象
- 为什么 JavaScript 执行会影响 Firefox 中的 css 动画和动画 gif
- 为DOM深处的元素设置动画真的会影响性能吗
- 如何在隐藏其他影响其定位的元素后对元素进行动画
- 是否有可能在不影响其他元素的情况下制作一个元素的动画?
- 如何在HTML5画布中停止一层中的动画而不影响另一层
- jquery动画影响posistion