设置1400 Raphael.js对象的不透明度会损害动画效果

时间:2012-08-31 12:23:04

标签: javascript performance raphael

首先,谢谢你的帮助。 :)

JSFiddle code

JSFiddle full screen

正如你可以通过上面的小提琴链接看到的那样,我正在制作1400个试图创造'闪烁效果'的物体。随着用户更快地移动鼠标,更多六边形形状突然变为完全不透明并且具有不同的淡出率。小提琴中的版本用足够的颜色填充空间,但感觉生涩和块状。如果我减少fade_time变量量,它会更平滑,但没有足够的六边形和完全不透明度。最终目标是用六边形拼写单词。

Chrome中的性能最佳,FireFox和IE中的性能较差。我在iPad的手机游戏中测试过(使用Raphael的element.touchmove),情况更糟。

我正在寻找任何建议,可以针对性能提升以不同的方式完成哪些代码。

我看到其他人给出了this answer这应该有助于提高性能,但我试图根据光标移动来设置动画六边形的数量,我不确定我是否可以使用计时器。

使用canvas提到

This answer

  

一个很好的选择是使用Canvas绘制元素。从我的实验来看,它会比SVG快得多,尽管如果你使用的是动画,它们将比使用RaphaelJS库更难实现。

对于人们来说,这似乎是一条更好的路线,即使代码使用的是动画吗?

这是我第一次使用Raphael.js。我在JS方面一般都不是很有经验,所以任何帮助都是wunderbar!

编辑:编辑:另外,看到this answer关于.resize被调用的次数超过提问者可能想到的次数让我想知道.mousemove函数是否可能被调用更多次(更多我想要的比我想象的要多。

1 个答案:

答案 0 :(得分:1)

我认为它会在“重叠”动画上窒息,例如:

  1. 六角形#6开始淡入淡出
  2. 在其淡出的一半时,另一个淡入淡出开始
  3. 我添加了stop()指令以避免意外结果。

    此外,for()循环不会检查是否正在进行另一个动画,也不会在循环内随机选择两个或更多的十六进制。 作为一种解决方法,我添加了一个向量来缓存动画六边形的索引,虽然它似乎没什么帮助。

    要查看已保存的动画数量(无用),请取消注释上一个console.log()

    此外,你的getRandomInt()函数生成了一些未定义的索引错误(因为你的数组索引从0到1399,它返回0到1400之间的整数......我改了它。

    在此处查看我的附加组件:http://jsfiddle.net/rz4yY/46/