具有200+矢量形状的画架JS:性能和美学
EaselJS with 200+ vector shapes : performance and aesthetics
使用 EaselJS 与 Canvas 本机方法
时,我遇到了一个巨大的性能问题:2.2 秒与 0.01 秒(尽管 EaselJS 确实映射画布本机方法......
我写了一个画布应用程序,它画了一棵树*。为了对树的生长进行动画处理,补间 EaselJS 图形对象似乎比编写自定义绘图函数更干净、更方便。*(实际上它看起来更像弗吉尼亚爬行者)
1)我一定做错了什么,因为EaselJS的性能很糟糕。
代码的重要部分:
var g=new createjs.Graphics();
g.bs(branchTexture);
for (var i=0; i < arbre.length; i++) {
var step=arbre[i];
for (var t=0; t < step.length; t++){
var d=step[t];
var c=d[5];
var s=new createjs.Shape(g);
s.graphics.setStrokeStyle(7*(Math.pow(.65,d[7]-1)),'round').mt(c[0],c[1]).qt(c[2],c[3],c[4],c[5]);
}
mainStage.addChild(s);
}
}
mainStage.update();
这是一个显示比较的jsfiddle:http://jsfiddle.net/xxsL683x/29/
我尝试删除纹理,简化 moveTo() 操作,但结果 si 仍然很慢。缓存不适用,因为它是第一个渲染通道。我做错了什么?
2)此外,我需要找到一种方法来将填充模式定向到增长方向,所以我想我会摆脱矢量形状并在两个"增长状态"之间插入一些位图。如果有人有更好的主意,我很乐意阅读它。
(但是如果能回答第一个问题会很好,这可能不是我最后一次尝试补间复杂对象。
3)摆脱EaselJS的另一个原因是抗锯齿不适用。为什么?还必须进行调查...
希望这个问题能帮助其他人避免一些错误,如果我做了一些,或者至少导致更好地理解 easeljs 处理矢量形状的方式。
PS : 这棵树确实有叶子;)...但我出于明显的清晰原因将它们拉了出来。
我已经更新了你的小提琴,它现在快多了。问题是你在每个循环中创建一个新的形状,这很慢。
for (var t=0; t < step.length; t++){
// loop
g.setStrokeStyle(7*(Math.pow(.65,d[7]-1)),'round').mt(c[0],c[1]).qt(c[2],c[3],c[4],c[5]);
}
// then just create a Shape after all your graphic commands are built
var s = new createjs.Shape(g);
mainStage.addChild(s);
http://jsfiddle.net/xxsL683x/31/
相关文章:
- 在Three.js中导出网格会提高性能吗
- immutable.js与嵌套映射/对象的比较/相等性能
- 性能与模块化:将JS集成到PHP或单独的custom.JS中
- 设置1400个Raphael.js对象的不透明度动画会影响动画性能
- ExtJS类的最佳实践最终导致了太多的.JS文件.性能怎么样
- Knockout.js性能-有多少可观察性
- 具有200+矢量形状的画架JS:性能和美学
- 三个js性能如何使使用图像纹理更快
- 选择.js性能
- React js 性能工具插件抛出“无法读取未定义的属性'计数'”
- 可排序,js性能很慢
- 请求进程中的节点 js 性能
- Three.js性能与对象数量有关
- 奇怪的JS性能问题
- Node.js性能-读取文件一次或每次请求
- JS性能:为什么不加载未初始化或删除的元素?
- js -性能低,只有40 "简单"模型
- 在Redux中切换到Immutable.js.性能影响是什么?对组件的影响是什么? '语法
- Internet Explorer中的传单.js性能较差
- Node.js性能瓶颈