大家都知道Flash处理矢量图比位图要慢,而具体的性能上对比也有不少的前人已经做过。
http://bbs.9ria.com/forum.php?mod=viewthread&tid=228212&extra=page=1&filter=typeid&typeid=332&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里边了。 简单结论:导出为位图无效。。。
如果大家有更好的见解,请不妨留言