Flex DisplayObject/DisplayObjectContainer

本文详细解析了Flex与Flash中的DisplayObjectContainer类的功能与使用方法,并对比了两者之间的架构差异,探讨了如何在Flex中使用Flash导出的SWC文件。

DisplayObject 是一种抽象基类;因此,不能直接调用 DisplayObject。 调用 new DisplayObject() 会引发 ArgumentError 异常。 

DisplayObjectContainer 类是可以包含子对象的所有对象的抽象基类。 无法直接对其进行实例化;调用 new DisplayObjectContainer() 构造函数会引发 ArgumentError 异常。

 

DisplayObjectContainer没有getChildren(), Container才有。

 

在Flex 3正式版中,没有DepthManager,代替它实现相关功能的是DisplayObjectContainer。

DisplayObjectContainer在管理子控件的Depth时,定义了两个函数:

1,swapChildren(child1:DisplayObject, child2:DisplayObject):void
2,swapChildrenAt(index1:int, index2:int):void

但是经过实验,第二个函数无用。在模块开发时,需要把获得焦点的模块置于最前方,可以通过以下方法实现:

private function swapPanels(obj : DisplayObject, parent : DisplayObjectContainer = null) : void
{
if(!parent) parent = this;
var maxIndex : int = this.numChildren - 1;
var topObj : DisplayObject = parent.getChildAt(maxIndex);
this.swapChildren(obj, topObj);
}

在flex 3中几乎所有的容器都继承于DisplayObjectContainer,把关于depth的管理归责于容器,这样架构让人感觉更加合适。

 

 

flash中的架构(Sprite类的继承关系) 
Sprite >DisplayObjectContainer>InteractiveObject >Displayobject 

Flex中的UIMovieClip类继承于UIComponent ,flash中的MovieClip继承于Sprite, 
flash中直接导出SWC,SWC中的元件属于MovieClip,而在Flex中确不能在现实对象中直接添加没有IUIComponent接口的类对象,所以不能使用. 

解决方法: 

我们可以使用官方提供插件,让FLASH自动编译MovieClip为UIMovieClip类, 
Flex Component Kit for Flash CS3工具

 


Container Inheritance UIComponent Inheritance FlexSprite Inheritance Sprite Inheritance DisplayObjectContainer Inheritance InteractiveObject Inheritance DisplayObject Inheritance EventDispatcher Inheritance Object

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值