您的位置:首页 > 产品设计 > UI/UE

无法将 flash.display::Sprite@156b7b1 转换为 mx.core.IUIComponent

2014-03-27 14:54 316 查看

无法将 flash.display::Sprite@156b7b1 转换为 mx.core.IUIComponent

在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,或者用UIMOVIECLIP,然后再添加这个UIComponent:

import mx.core.UIComponent;private function init():void { var sp:Sprite = new Sprite(); var uc:UIComponent = new UIComponent(); uc.addChild(sp); addChild(uc);}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐