Flex addChild()方法注意事项

譬如以下代码就会报错:
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);
}

(0)

相关推荐

  • Flex addChild()方法注意事项

    譬如以下代码就会报错: private function init():void { var sp:Sprite = new Sprite(); addChild(sp);} 复制代码 代码如下: TypeError: Error #1034: 强制转换类型失败:无法将 flash.display::Sprite@156b7b1 转换为 mx.core.IUIComponent. 这是因为Application的addChild方法并非完全继承自DisplayObjectContainer, A

  • jQuery中inArray方法注意事项分析

    本文分析讲述了jQuery中inArray方法注意事项.分享给大家供大家参考,具体如下: jquery为web开发者提供了很大的便捷,本文写作的目地是提醒大家慎重jquery中的inArray方法. 大家都知道javascript是一种弱类型语言,对于数字类型和字符类型,可以随意切换(例如:1+""="1"),下面开始说主题: jquery的一个方法inArray(ele, array)是判断ele是否在array中存在,返回值是该元素第一次出现在数组array中的

  • Java list.remove( )方法注意事项

    这篇文章给大家简单介绍了Java list.remove( )方法注意事项,具体内容如下: List<Integer> integerList = new ArrayList<>(); 当我们要移除某个Item的时候 remove(int position):移除某个位置的Item remove(object object):移除某个对象 那么remove(12)到底是移除第12的item,还是移除内容为12的Item. 那就要看12到底是int类型还是Integer类型,如果是i

  • Java HashSet的Removals()方法注意事项

    目录 前言 那么如何解决? 前言 我有一个集合,实际上是一个HashSet.我想从中删除一些item…其中许多item可能不存在.事实上,在我们的测试用例中,“removals”集合中的所有项都不在原始集合中.这听起来——实际上也是——非常容易编码.毕竟,我们已经准备好了.removeAll来帮助我们,对吗? 让我们把它变成一个小测试.我们在命令行上指定“source”set的大小和“removals”集合的大小,并构建它们.source set合只包含非负整数:删除集仅包含负整数.我们使用系统

  • asp.net Server.MapPath方法注意事项第1/2页

    在做一个客户推广系统的时候,里面有一个模板管理模块,需要管理员添加模板,包括模板的名称.说明和缩略图等,在这里上传图片的功能,我采用了比较传统的方法,进行上传,测试没有问题.但当我发布之后,对存储图片的文件夹创建了虚拟目录,并赋予该目录写入的权限,但是,当我上传图片的时候,总是失败.以前没遇到过这种情况,觉得很是怪异,所以想尽办法去解决. 首先,检查上传目录的权限,我添加了NetWork Service用户的写入.修改权限,结果还是失败,然后我将权限设置为EveryOne还是失败,看来不是权限的

  • jQuery中append、insertBefore、after与insertAfter方法注意事项

    这里列的是针对初学jQuery者来说容易搞不懂的部分,我在这里把这些方法列了个清单,希望大家能看的懂.如下: 方法 源包装集/字串 目标包装集体 特性描述 A.append(B) B A 若目标包装集只匹配一个元素,则源(也包括同源包装集匹配的所有元素)将被移动到目标位置:若目标包装集包含多个元素,则源将保留在原来的位置,但同时复制一份相同的副本到目标位置. 由此,若目标只匹配一个元素时,使用前述方法后源将被删除. B.appendTo(A) A.prepend(B) B.prependTo(A

  • jquery使用append(content)方法注意事项分享

    如以下示例:向所有段落中追加一些HTML标记. HTML 代码: 复制代码 代码如下: <p>I would like to say: </p> jQuery 代码: 复制代码 代码如下: $("p").append("<b>Hello</b>"); 结果: [ <p>I would like to say: <b>Hello</b></p> ] 这样看好像没什么,很正常

  • js调用Flex中的方法并向flex中传参及flex调用js示例

    首先,有了一个swf文件,test.swf,同时也有一个自动生成的html文件,test.html. 然后,在另外一个文件,test.jsp中,通过iframe,引入了test.html,即引入了swf. 现在想要在test.jsp中,向flex传参,并调用flex中的方法,我采用的方法是: 首先,在jsp中写一个调用flex的方法,如下 复制代码 代码如下: function initSWF(){ //得到swf的object var obj = window.frames["rightfra

  • flex与js通信与彼此之间的互调整理(二)

    之前写了一篇flex和js之间的通信,还记得最开始研究这两门语言如何交互,一晃我的任务也快做完了,公司的realspace产品之开了js的API,但是现在使用flex产品的人也比较多,要求开设flex的三维API,已经过去几个月了,产品也上线了,有兴趣的可以在https://github.com/SuperMap/Flex-Realspace下载,这是一个利用as与js交互放在了一个完整的产品里. 网上也有很多关于flex和js通信的文章,不过不知道大家有没有注意到好像都需要把js文件放在固定的

  • php的SimpleXML方法读写XML接口文件实例解析

    在php5中读写xml文档是非常方便的,可以直接使用php的SimpleXML方法来快速解析与生成xml格式的文件,下面举例说明: 创建一个SimpleXML对象有三种方法: 1.使用new关键字创建 复制代码 代码如下: $xml="<personinfo><item><id>1</id><name>aaa</name><age>16</age></item><item>&l

随机推荐