Flash 矢量图和位图性能对比 导出为位图/缓存为位图 export as bitmap / cache as bitmap

 大家都知道Flash处理矢量图比位图要慢,而具体的性能上对比也有不少的前人已经做过。
http://bbs.9ria.com/forum.php?mod=viewthread&tid=228212&extra=page%3D1%26filter%3Dtypeid%26typeid%3D332&page=1
这里copy一下别人的结论,4种模式下的性能对比:


另外,这里想补充2点,第一个是关于为什么位图是否带AS链接的区别;第二个是导出为位图和缓存为位图的区别。

1、首先看看这里位图指的是怎么样的场景:



 
      


trace一下Ball元件的子节点,我们会发现位图带不带导出AS链接,有惊人的差别。
不带AS链接,子节点是一个flash.display.Shape
带AS链接,子节点是一个flash.display.Bitmap

我的理解是:
不带AS链接,编译器认为这个位图不会再重复使用,为了保持矢量作风(Flash喜欢矢量),把位图分离填充到Shape中。
如果导出了AS链接,那么编译器会知道日后还会实例化(new)这个BitmapData,所以就生成为Bitmap

2、在测试过程中,尝试了一下“导出为位图”和“缓存为位图”。

缓存为位图也就是上边链接文章说的方式,对于元件本身没有动画的情况,是非常有效的。当然,文章的示例程序还是包了一层MovieClip,也许实际应用会有更高效的写法(例如BitmapData.draw等)

相应,尝试了一下导出为位图,按官方资料介绍,这里只是运行时和编译时转为位图的区别,但是实际效果来看,导出为位图跟原来矢量效果没有差别。
这里百思不得其解。
trace可以发现,导出为位图,实际运行过程中,Ball和Ball的子元件都是原来的类型(MovieClip和Shape),而且Ball的cacheAsBitmap是false,没有看到任何位图的影子。
也许这又回到了第一个问题上,虽然导出了位图,但这个位图还是被分离到Shape里边了。

简单结论:导出为位图无效。。。 
 
如果大家有更好的见解,请不妨留言
posted @ 2013-12-25 17:54  拂晓风起-Kenko  阅读(1220)  评论(0编辑  收藏  举报