【转载的。。。。。。。。。。。。。。。】

在AS3中,我们可以用getChildByName来获取一个元件,但是要注意返回的类型是DisplayObject,这样一旦我们的元件中有一些自定义的方法就不能使用了。

比如我有一个类Ball,Ball有一个方法move,那么我可以这样写:

var b:Ball=new Ball();

addChild(b);

b.move();//这样没问题

getChildByName(”b”).move();//这样编译时会报错

其原因应该就是getChildByName返回的类型是DisplayObject,而并不是Ball,所以无法调用Ball的方法。

如果这样写:

var c:Ball= getChildByName(”b”) as Ball;

c.move();

这样就没问题了,编译通过,可以调用Ball的方法。

下面是我自己的总结:

getChildByName方法是用于元件动态命名时的。例如:在场景中有一个元件,在属性面板中对其命名为cc,在对其操作时就可以写 cc.y=XXX;而动态命名时,就如上面的例子,场景中本没有这个元件,用addChild将其放到场景中时再对其命名,这时要对这个元件进行操作就要 用到getChildByName了,再举例如下:

var b:Ball=new Ball()

addChild(b)

b.name="mc1"

getChildByName("mc1").y=200

补充:

例如场景中有一元件mc1,现在用一个字符串来表示它,并且利用这段字符串来调用它的属性或方法:

var cc="mc1"

getChildByName(cc).XXX

这时如果是自定义的属性或方法的话,会报错,因为AS3认不出来被操作的对象是何类型的,这就需要我们来告诉它,有两种方法解决这个问题:

一、将getChildByName(cc)改成MovieClip(getChildByName(cc)),意思是先用getChildByName 将cc这个字符串变成DisplayObject,然后再将它变为MovieClip,这时AS3认出它是一个MovieClip了,就可以访问它的属性 和调用它的方法了。

二、将语句写成:

var cc:MovieClip=mc1

this["cc"].XXX

另外还有一种字符串的写法:

var cc=mc1.name

this["cc"].XXX

这里mc1.name必须是在属性面板里命名的,而不是mc1.name="XXX"命名的

[]在这里就是动态的意思,被操作的对象的类型是动态的,这样就可以绕过AS3的编译器了

AS3中的getChildByName的更多相关文章

  1. as3中的多线程

    从fp11.4开始支持worker技术, 即as3中的线程概念, 到了fp11.5, flascc中开始支持pthread家族来创建线程. 总的来说, as3中有两种创建线程的方法: 1.直接在as3 ...

  2. AS3中释放优化的几条常识

    as3中垃圾和堆弃物如不及时清理,会造成进程的速度方面授予限制,下面讲几点关于释放优化的几条内容. 被删除对象在外部的所有引用一定要被删除干净才能被系统当成垃圾回收处理掉: 父对象内部的子对象被外部其 ...

  3. AS3中的单件(Singleton)模式

    单件(singleton)模式在c#中是最容易实现的模式,其主要用意就在于限制使用者用new来创建多个实例.但在as3中,构造函数必须是public的(语法本身要求的),而且也不能在构造函数中抛出异常 ...

  4. AS3中String转换成Boolean

    AS3中, 对布尔值的转换, 规定所有的非空字符串都是true. 下面都不行: var f:Boolean = new Boolean(str); var f:Boolean = str as Boo ...

  5. (转)AS3 中,Function.apply、call中第一个参数的作用;与什么时候用

    http://blog.csdn.net/linjf520/article/details/8746064 大家在使用Function.apply或是call时,是否发现,第一个参数不知道怎么用,赋值 ...

  6. AS3中以post和get方式提交数据

    这里主要介绍在as3中用URLRequest对像来post或get数据到服务器. post用于大数据量的提交,get用于小数据量的提交. as3中提交数据: POST方式: 1.新建一个test.fl ...

  7. AS3中ASCII码和字符互转函数

    AS3中ASCII码和字符互转函数 字符转成ASCII码: 格式:字符串变量.charCodeAt(字符位置); var str:String = “A”; trace(str.charCodeAt( ...

  8. AS3中 is,as,typeof的区别

    AS3中 is,as,typeof的区别 . var my_num:Number=9;trace(typeof my_num);var my_object:Array=["语文", ...

  9. 在as3中使用protobuf

    在最近参与开发的adobe air项目中,前后端的通信协议从XML.JSON再到protobuf,最后选择protobuf原因,主要是前后端维护protobuf协议就行了,同时还可以利用IDE做一些编 ...

随机推荐

  1. win32网络模型之重叠I/O

    网上大部分重叠I/O的基本概念都讲得很清楚,但是大多讲得不是很深入,实际用起来很多问题.这里只对完成实例的通知进行讨论,对问题进行总结. 重叠IO异步读写后,在某一时刻"完成"后会 ...

  2. PythonStudy——魔法函数 Magic Methods

    魔法函数 python中以双下划线开始和结束的函数(不可自己定义)为魔法函数 调用类实例化的对象的方法时自动调用魔法函数(感觉不需要显示调用的函数都叫) 在自己定义的类中,可以实现之前的内置函数,比如 ...

  3. <亲测>CentOS中yum安装ffmpeg

    CentOS中yum安装ffmpeg 1.升级系统 sudo yum install epel-release -y sudo yum update -y sudo shutdown -r now 2 ...

  4. 关于Mybatis的那点事

    1.实现关联表查询 1.1. 一对一关联 1). 提出需求 根据班级id查询班级信息(带老师的信息) 2). 创建表和数据 CREATE TABLE teacher( t_id INT PRIMARY ...

  5. FreeBsd网络性能优化方案sysctl

    以下是阿盛的配置 sysctl net.inet.tcp.msl= sysctl net.inet.tcp.mssdflt= sysctl net.inet.tcp.minmss= sysctl ne ...

  6. IDEA—— 找不到或无法加载主类Main

    最近使用idea,编写了一个项目,发现老是找不到main,网上找了一大圈的解决方案,都不行.灵机一动升级了jdk就可以了,之前用的是1.7的,换成了1.8的就好了.

  7. wps表格开发C#

    1.需要添加引用etapi.dll,这个dll在你的wps的安装目录下面可以找到. 2.主要的类: Excel.Application:顶层对象 WorkBook:工作簿 WorkSheet:表 Ra ...

  8. Hibernate一对多OnetoMany

    ------------------------Hibernate一对多OnetoMany 要点: 配置在一端. 1.如果是单向关联,即只在一端配置OneToMany,多端不配置ManyToOne.则 ...

  9. SQLServer 清空某个库所有表

    select @n=1 insert #temp(tablename) SELECT distinct sobjects.name FROM sysobjects sobjects WHERE sob ...

  10. SpringBoot,SpringCloud入门到精通最简单教程

    https://blog.csdn.net/ztx114/article/details/78091689