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