Flex addChild()方法注意事项
更新时间:2009年08月03日 23:36:22 作者:
在Flex Application里,是不能直接用addChild添加Sprite,MovieClip等来自flash.display包里的类的。
譬如以下代码就会报错:
private function init():void { var sp:Sprite = new Sprite(); addChild(sp);}
TypeError: Error #1034: 强制转换类型失败:无法将 flash.display::Sprite@156b7b1 转换为 mx.core.IUIComponent。
这是因为Application的addChild方法并非完全继承自DisplayObjectContainer,
Application→LayoutContainer→Container →UIComponent→FlexSprite→Sprite
→DisplayObjectContainer
而是在Container那里被重写了:
public override function addChild(child:DisplayObject):DisplayObject虽然参数child的类型是DisplayObject,但是它必须实现IUIComponent接口(所有Flex组件都实现了这一接口),才能添加。
如果要在Application里添加Sprite,可以先把它装进一个UIComponent,然后再添加这个UIComponent:
官方的说法:
* <p><b>Note: </b>While the <code>child</code> argument to the method
* is specified as of type DisplayObject, the argument must implement
* the IUIComponent interface to be added as a child of a container.
* All Flex components implement this interface.</p>
例子:
import mx.core.UIComponent;private function init():void {
var sp:Sprite = new Sprite();
var uc:UIComponent = new UIComponent();
uc.addChild(sp); addChild(uc);
}
private function init():void { var sp:Sprite = new Sprite(); addChild(sp);}
复制代码 代码如下:
TypeError: Error #1034: 强制转换类型失败:无法将 flash.display::Sprite@156b7b1 转换为 mx.core.IUIComponent。
这是因为Application的addChild方法并非完全继承自DisplayObjectContainer,
Application→LayoutContainer→Container →UIComponent→FlexSprite→Sprite
→DisplayObjectContainer
而是在Container那里被重写了:
复制代码 代码如下:
public override function addChild(child:DisplayObject):DisplayObject
如果要在Application里添加Sprite,可以先把它装进一个UIComponent,然后再添加这个UIComponent:
官方的说法:
* <p><b>Note: </b>While the <code>child</code> argument to the method
* is specified as of type DisplayObject, the argument must implement
* the IUIComponent interface to be added as a child of a container.
* All Flex components implement this interface.</p>
例子:
复制代码 代码如下:
import mx.core.UIComponent;private function init():void {
var sp:Sprite = new Sprite();
var uc:UIComponent = new UIComponent();
uc.addChild(sp); addChild(uc);
}
相关文章
Flex与.NET互操作(十二):FluorineFx.Net的及时通信应用(Remote Shared Objects
远程共享对象(Remote Shared Objects) 可以用来跟踪、存储、共享以及做多客户端的数据同步操作。只要共享对象上的数据发生了改变,将会把最新数据同步到所有连接到该共享对象的应用程序客户端。2009-06-06Flex DataGrid DataGridColumn数据颜色多样化-类型替换
用得多了,发觉自己了解的真的是九牛之一毛都没有,最近用到了从后台读出数据时显示的问题,相信很多人都有用整形数据来代替字符串数据的情况2009-06-06Flex与.NET互操作 使用HttpService、URLReqeust和URLLoader加载/传输数据
在前两篇文章中分别介绍了Flex与.NET的WebService之间的数据交互通信知识,本文将介绍另外一种加载数据以及发起请求的方式。2009-06-06
最新评论