AS3 project 性能优化-----老袁大哥的空间

如果一个区域有图层,在上面再覆盖一个不透明的,完全遮盖住下面的所有图层,再在最上面放些别的东西,那么在render这个区域的时候,那些完全不可见的图层还会占用CPU么?
  答案是“是”。必须 removechild。
  开销最大的就是render,其他的,诸如Tweener,数学计算,包括三角,幂,数组遍历,等等,都差着数量级呢。
  要优化,先从render开始。

  此次彻查发现如下事实:
  visible == false的图层还会占用CPU么?不幸的是答案也是肯定的。必须removechild。
  频繁的removechild/addchild会令CPU负担很重么?出乎我意料,不重,很轻。
  画面大小对性能影响大么?很大,缩小画面可大大减小CPU。
 
  Sprite或UIComponent层数过多会增加负担么?
  我在一个动画外套了100个互相嵌套的UIComponent,没感觉效率下降。500个,依然没事。1000个,Firefox死了。
  由此衍生的一个猜想,空白UIComponent会影响么?
  还是这个实验,100个互相嵌套的UIComponent,只是最上一个没有child,没事。1000个,Firefox没死。

  最有效的提高效率的方法是什么呢?
  MovieClip.cacheAsBitmap = true;
  如果设置为 true,则 Flash Player 将缓存显示对象的内部位图表示形式。 此缓存可以提高包含复杂矢量内容的显示对象的性能。
  具有已缓存位图的显示对象的所有矢量数据都将被绘制到位图而不是主显示。 然后,将位图作为贴紧到最接近像素边界的未拉伸、未旋转的像素复制到主显示。 像素按一对一与父对象进行映射。 如果位图的边界发生更改,则将重新创建位图而不会拉伸它。
  除非将 cacheAsBitmap 属性设置为 true,否则不会创建内部位图。
  将 cacheAsBitmap 属性设置为 true 后,呈现并不更改,但是,显示对象将自动执行像素贴紧。 动画速度可能会大大加快,具体取决于矢量内容的复杂性。

  我的项目中活动物体是Flash AuthorTool作的,矢量很多,动作复杂。场景中物体个数为20个的时候就撑不住了。设置cacheAsBitmap后几乎不停顿。效果非常明显。
  由此,详细探讨几个问题:

  cacheAsBitmap会影响子对象么?如果是,那么只在主场景中设置一次就足够了。
  经过大量干瞪眼肉眼观察的实验,答案是“否”。
  那么cacheAsBitmap设置的时机就是有关系的了。是否设置cacheAsBitmap时点之后加到该displayobject的child就不被cache了?遗憾的是人肉评价无法鉴别,待我想个办法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值