`

addChild&&rawChildren的addChild

    博客分类:
  • Flex
阅读更多

转自:http://hi.baidu.com/ls_mcx/blog/item/ccb4720bbc68c332b1351d90.html

 

 

如果你想将一个sprite放入一个的容器内,那么 你会调用容器的 addChild方法。但是 运行 就会报错误,不是Uicomponent的子类。但是 查API 你会发现 addChild的参数 的类型 是定为DisplayObject的。没错啊 编译也通过的啊 。
今天才发现 调用rawChildren的addChild就可以不报错的添加成功。
那么 这两个方法究竟有什么区别?使用的时机各是什么?这么做的意义又是什么呢?
mx.core.Container是“组件(UIComponent)容器”,用来管理其中子组件(UIComponent)的布局。通过Container的numChildren属性和getChildAt()方法就可以遍历其所包含的子组件,也可以通过getChildren()方法一次性获得所有子组件的数组。通过addChild()、addChildAt()、removeChild()、removeChildAt()、removeAllChildren()等方法来维护容器所包含的子组件。我们最常用的Application就是组件容器,组件同组件容器的关系非常密切,Flex中的组件无法脱离容器而独立显示,Flex组件必须放在某个容器中才能工作。因此,Flex组件的生命周期和布局都与组件容器息息相关,这一点在2.5.2节中会有详细阐述。
    mx.core.Container是组件(UIComponent)容器的同时也是一个“显示对象容器(DisplayObjectContainer)”。值得注意的是:作为组件(UIComponent)容器,Container覆盖了继承自DisplayObjectContainer的addChild()、addChildAt()、removeChild()、removeChildAt()等方法,这些方法在Container类中只是用来维护组件容器所包含的子组件,这不同于维护子显示对象。同时,Container的numChildren属性也只是用来表示容器中所有子组件的数量而不是所有子显示对象的数量。
    Container自身也是一个组件,它也有自己的内部对象,比如边框、背景、滚动条、标题、注脚等,这些内部对象被称为组件容器的“边饰”。从显示对象容器角度来看,Container的内部对象以及子组件都是显示对象容器的子显示对象。因此,容器的所有子显示对象应包括其内部对象以及所有的子组件(child UIComonent),通过Container的rawChildren属性可以获得访问容器所有子显示对象的接口。代码清单2-18列出了Application对象的所有子显示对象,并标记了每个子显示对象是子组件还是内部对象

rawChildren是容器特有的,看看API就可以大概理解rawChildren的作用了。

分享到:
评论

相关推荐

    Flex addChild()方法注意事项

    在Flex Application里,是不能直接用addChild添加Sprite,MovieClip等来自flash.display包里的类的。

    as3场景中MC复制一个或多个

    说明:这个是用来实现已在场景中的Mc复制多个出来,如AS2中可以duplicateMovieClip,AS3中用是用New和addChild的, 有人会说As3可以用  方法1——反射方法: var ClassRef:Class = getDefinitionByName...

    cocos2d-x的粒子创建

    this->addChild(back,0); //加载大炮的炮台效果和图标效果,如果这里的代码与上面的代码前后顺序更改,则会出现炮台效果在水波下面显示。不是没有显示,只是遮挡关系的原因。而看不见 texture=CCTextureCache::...

    cocos2d象棋游戏

    addChild(_s[i]); //设置棋子的初始位置为随机位置 _s[i]->setPosition(ccp(CCRANDOM_0_1() * winSize.width, CCRANDOM_0_1() * winSize.height)); //隐藏棋子 _s[i]->setVisible(false); } //创建一个选择框 ...

    aether.swc

    sprite.addChild( background ); sprite.addChild( textField ); return sprite; } // Create the display object for the button's up state private function createOverState():Sprite { var sprite:...

    吹泡泡源码

    this.addChild(pao); addPaopao();//调用一个泡泡 this.addChildAt(fengcheMC,this.numChildren); this.addEventListener(MouseEvent.MOUSE_MOVE,onMove); Mouse.hide();//隐藏鼠标 this....

    基于WebGL的游戏引擎PlayCanvas.zip

    app.context.root.addChild(camera); app.context.root.addChild(light); // Set up initial positions and orientations camera.setPosition(0, 0, 3); light.setEulerAngles(45, 0, 0); // Register...

    pixi-ui:无需任何前端库,即可在您的PixiJS应用程序中提供确定的用户体验!

    浦西该项目旨在提供可与您的PixiJS应用程序集成的用户体验模块。 它允许您以很少的开销使用用户界面来... addChild ( new PUXI . Button ( { text : "Hello world!"} ) ) ;uxStage . addChild ( new PUXI . Text ( {

    AS元件数字雨

    addChild(my1);//让数字雨显示出来 a++;//数字雨数量递增命令 if (a>140) {//如果数据流数量超过140 this.removeChildAt(5);//自动删除5条数据流 a=140;//控制显示数量在140,否则会乱套的 } } var b:Number=1...

    JAVA 3D开发工具包(3个版本安装包 + 一个用例)

    objTrans.addChild(new ColorCube(0.4)); Transform3D yAxis = new Transform3D(); /* * 提供转换一个时间值到一个0到1之间的alpha值的方法 * 第一个参数loopCount:运行循环次数,-1表示无限循环 * 第二个...

    egret-inspector-install:Egret chrome Inspector v2.5.5 修复可用版 白鹭引擎 Egret 谷歌插件,支持Chrome 87+

    Egret 白鹭开发Chrome插件(修复版)更新:20210113更新亲测Chrome 87.0.4280.141(正式版本)有效控制台偶尔会报错 Uncaught TypeError: this.addChild is not a function 。这插件依赖页面中的 Egret 引擎,当它在...

    Flash制作雪花特效动画

    snowFloor.addChild(snowmc); snowmc.alpha=Math.random()+0.3; snowmc.width=snowmc.height=Math.random()*4+4;//雪花的大小大于4小于8 snowmc.vx=(Math.random()-0.5)*5; snowmc.vy=Math.random()...

    快速创建树的方法 (抛弃拙劣的数据库结构和算法)

    pNodes[nLevel] := TreeView1.Items.AddChild(pNodes[nLevel - 1], lpName); MoveNext; end;end;4、短短 20 行,一次读取数据。有人可能问为什么把 pNodes 的大小设成 1024?你也可以设成 10000,随你便,不过 ...

    cocos2dx 雷电MoonWarriors_游戏源码

    addChild(m_ship, m_ship->getZoder(), 1001); CCMenuItemImage *pause = CCMenuItemImage::create("pause.png", "pause.png", this, menu_selector(GameLayer::doPause)); pause->setAnchorPoint(ccp(1, 0)); ...

    网页编辑器核心技术之一,用TTreeViewer显示网页源,代码的结构,读写网页源代码

    说明:网页编辑器核心技术之一,用TTreeViewer显示网页源代码的结构,读写网页源...,WebBrowser1.OleObject.document,TreeView1.Items.AddChild(,TreeView1.Selected.AbsoluteIndex,Lines.Text,FindCode(,WebBrowser1

    cocos2dx 3.3 实现再按一次退出游戏 类代码

    实现安卓app再按一次退出游戏效果,自己研究的,不知道对不对,反正自己测试已经实现按两次返回键退出,只要在需要监听的地方加入如下代码就可以 #include "againExit.h" ...addChild(a, 10); ... 就可以了

    AS3中MovieClip的图层切换

    在As3中将AS2中的深度改成了标签,一直没闹明白怎么使用,一般都是直接addChild把mc放到最上面 今天做的这个因为本身在mc中,所以addChild会吧mc再添加一次,造成mc重复 研究了很久,发现了这个,并非原创,欢迎大家...

    flash as 有源码实例

    包括addchild、alpha、beginfill、begingradientfill、gotoandplay等应用实例

    代码风格说明对于命名发尽量用英文,如果没有合适的英文就用中文全拼

    应用程序(这里主要是指MFC,当然也可以用其他嵌入式代码书写)的标识符通常采用“大小写”混排的方式,如 AddChild。用程序的标识符通常采用“大小写”混排的方式,如 AddChild。对于命名发尽量用英文,如果没有...

    Delphi XML指定位置插入节点

    如果节点套节点,情况比较复杂,就要考虑另一种插入方式了,就是根据索引进行插,普通节点的插入方式是AddChild('NodeName',NodeIndex);对于注释节点的插入则要使用ChildNodes.Insert(NodeIndex,IXMLNode); 程序...

Global site tag (gtag.js) - Google Analytics