首先,谢谢你的帮助。 :)
正如你可以通过上面的小提琴链接看到的那样,我正在制作1400个试图创造'闪烁效果'的物体。随着用户更快地移动鼠标,更多六边形形状突然变为完全不透明并且具有不同的淡出率。小提琴中的版本用足够的颜色填充空间,但感觉生涩和块状。如果我减少fade_time变量量,它会更平滑,但没有足够的六边形和完全不透明度。最终目标是用六边形拼写单词。
Chrome中的性能最佳,FireFox和IE中的性能较差。我在iPad的手机游戏中测试过(使用Raphael的element.touchmove),情况更糟。
我正在寻找任何建议,可以针对性能提升以不同的方式完成哪些代码。
我看到其他人给出了this answer这应该有助于提高性能,但我试图根据光标移动来设置动画六边形的数量,我不确定我是否可以使用计时器。
使用canvas提到一个很好的选择是使用Canvas绘制元素。从我的实验来看,它会比SVG快得多,尽管如果你使用的是动画,它们将比使用RaphaelJS库更难实现。
对于人们来说,这似乎是一条更好的路线,即使代码使用的是动画吗?
这是我第一次使用Raphael.js。我在JS方面一般都不是很有经验,所以任何帮助都是wunderbar!
编辑:编辑:另外,看到this answer关于.resize被调用的次数超过提问者可能想到的次数让我想知道.mousemove函数是否可能被调用更多次(更多我想要的比我想象的要多。
答案 0 :(得分:1)
我认为它会在“重叠”动画上窒息,例如:
我添加了stop()
指令以避免意外结果。
此外,for()循环不会检查是否正在进行另一个动画,也不会在循环内随机选择两个或更多的十六进制。 作为一种解决方法,我添加了一个向量来缓存动画六边形的索引,虽然它似乎没什么帮助。
要查看已保存的动画数量(无用),请取消注释上一个console.log()
。
此外,你的getRandomInt()
函数生成了一些未定义的索引错误(因为你的数组索引从0到1399,它返回0到1400之间的整数......我改了它。
在此处查看我的附加组件:http://jsfiddle.net/rz4yY/46/