在iPad2上用HTML5绘制粒子的最有效方法
Most efficient way to draw particles in HTML5 on iPad 2
我正试图为一个针对iPad2的HTML5网站/应用程序创建带有轨迹的移动灯光。我想知道最好的方法是什么,使用HTML5是否可行。我选择HTML5是因为它比使用Objective C的原生iOS应用程序更容易、更便宜地开发和部署。当然,如果事实证明HTML5根本没有提供足够的性能,我可能不得不吞下苦果。
无论如何,为了给你一个印象,我在说什么,这就是我到目前为止得到的:
屏幕截图http://devdali.no-ip.org/mathias/test-lights/screenshots/1.jpg
或者你可以在这里看到它的作用(只适用于基于webkit的浏览器)。
起初,我尝试使用HTML5画布,并以类似于上面所示的方式将径向渐变绘制为粒子。它起作用了,但即使在我的台式电脑上,帧速率也很糟糕!
因此,经过一点阅读,我发现CSS3转换可能是硬件加速的,所以我构建了上面看到的版本。每个"粒子"都是一个64x64 png图像。对于每个灯光,都有一个"头"灯光(一个img),后面是由115个img元素组成的轨迹。每个img元素都使用"translate3d"(以及缩放和旋转)进行转换。每个元素的不透明度也是动态调整的。
这样做在我的电脑上提供了更好的帧速率,但我怀疑iPad2能否处理它
如果有人能给我一些关于如何提高总体性能和考虑目标平台的提示,我将不胜感激。
感谢您提前提供的帮助!
如果您接受效果的小更改,其他一些过程可能会很快工作:
-
不要通过许多粒子绘制灯光的轨迹,只需在Canvas元素中的当前位置绘制灯光即可。
-
然后,您可以在一帧开始时通过在顶部填充一个不透明度非常低的黑色矩形来使整个图像变暗。这样,轨迹会逐渐变暗,但不会像现在这样改变颜色。
-
然而,绘图操作的数量将大大减少。最昂贵的操作是为每一帧填充渐变矩形。
这应该在画布中构建。看看EaselJS和这个演示。
http://easeljs.com/http://easeljs.com/demos/MusicVisualizer/index.html
您可以通过使用WebGL(,iPad2上支持)来优化性能LOT…正如Nison Maël所说,它不支持ios safari上的基本html页面。。。
目前,您只能将画布作为一种解决方案。这仍然会给你更好的表现。。。
(您可以查看此博客了解更多信息:http://learningwebgl.com/blog/
只要有一点信心和时间,你就会大吃一惊!)
- 在jQuery中创建向下滑动子菜单的最有效方法
- 使用Underscore.js修改json数组中所选元素的更有效方法
- 选择具有值数组的所有元素的最有效方法
- 将JSON存储和恢复到此Ionic应用程序的最有效方法
- 将javascript数组中的项移动到特定位置的有效方法
- 将JS对象数组转换为嵌套形式的最有效方法
- 隐藏具有特定类$.each、for等的元素的有效方法
- 什么's是调用具有可变参数的函数的有效方法
- 选择具有特定数据的所有 html 标记的最有效方法是什么 - [适当性],无论值如何
- 使用 jQuery 调用 PHP 端点的最有效方法
- 这是解析 Int 的有效方法吗?
- 在JavaScript中搜索数组映射的最有效方法
- 获取字符串中最后一个换行符的最有效方法是什么
- 什么's是在两个(或多个)阵列中找到匹配的细胞序列的最有效方法
- 什么's是在IE8+中添加元素的最有效方法
- 从任何jquery选择器字符串创建元素的最有效方法
- 在日期范围内查找丢失日期的最有效方法是什么
- 对区间[1,10^12]中的整数进行编码/解码的快速有效方法是什么
- 在条件(if)结构的条件语句中是否有定义变量的有效方法
- 在ASP.NET中使用JQuery UI自动完成的有效方法