Flex4显示优化:DisplayObject和IGraphicElement的区别

DisplayObject是重量级的Flash对象,Flex4大量依靠Skin来调款式很容易会造成运行速度问题。Skin里面的款式会创建很多DisplayObject对象。幸亏,Flex4也有办法减少DisplayObject占用过多内存的办法:IGraphicElement

实现IGraphicElement的类不必继承DisplayObject。需要显示的时候,他们的容器(Group)会替他们提供DisplayObject。如果Group能提供一个实现ISharedDisplayObject的DisplayObject,多个IGraphicElement可以通用一个DisplayObject。Group会负责创建和分配DisplayObject对象。这样能提神显示效率,特别是降低内存用量。

Adobe的Flex4设计方案中有几个好示意图:http://opensource.adobe.com/wiki/display/flexsdk/IGraphicElement

怎么利用这个功能?写显示代码时,要尽量用轻量的IGraphicElement对象,如Bitmap、Rect、Line等,减少周围的容器。特别是在重复使用的组件如ItemRenderer中。

比如,用几个Group来布局一个ItemRenderer不如用绝对布局:

<ItemRenderer>
<Group>
  <Bitmap/>
</Group>
<Group>
  <Rect/>
</Group>
</ItemRenderer>

最少使用3个DisplayObject

<ItemRenderer>
  <Bitmap/>
  <Rect/>
</ItemRenderer>

可以只用一个DisplayObject

怎么检测你的组件用多少DisplayObject呢?请看:http://www.billdwhite.com/wordpress/?p=296

posted @ 2010-11-03 17:08 子福当自强 阅读(...) 评论(...) 编辑 收藏
悟道2012