博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flash as3 基础:AS3中的getChildByName(转)
阅读量:5882 次
发布时间:2019-06-19

本文共 1472 字,大约阅读时间需要 4 分钟。

在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的编译器了

来自:

 

下面是自己写的段代码:

//==create items text ==

 for (var _item=0; _item<6; _item++) {
  var txtItem:TextField=new TextField();
  txtItem.text=arrItemName[_item];
  txtItem.x=155+_item*85;
  txtItem.y=552;
  var o:TextField=new TextField();
  o=getChildByName("txtItem"+_item.toString()) as TextField;
  o.addEventListener(MouseEvent.CLICK,createStatisticalGraph);
  addChild(o);
  arrObjects.push(o);
 }

转载地址:http://wspix.baihongyu.com/

你可能感兴趣的文章
麦子学院与阿里云战略合作 在线教育领军者技术实力被认可
查看>>
正确看待大数据
查看>>
Facebook通过10亿单词构建有效的神经网络语言模型
查看>>
2016股市投资风向标 大数据说了算
查看>>
发展大数据不能抛弃“小数据”
查看>>
25000个布满恶意软件的摄像头组成的僵尸网络
查看>>
FB全球开放360度直播功能 首先需要一个FB账号
查看>>
量子通信成信息安全领域发展重点 潜在市场望达1000亿元
查看>>
OpenFlow下一步该怎么走?
查看>>
CoreOS为容器安全带来不同方法
查看>>
用EXCEL导入QC需求和测试用例详解
查看>>
中了WannaCry病毒的电脑几乎都是Win 7
查看>>
老男孩最近几年常用的免费的开源软件
查看>>
学生机房虚拟化(九)系统操作设计思路
查看>>
JQ笔记之选择器
查看>>
从自动化测试到持续部署,你需要了解这些
查看>>
linux文件系统
查看>>
处理不同jQuery版本的兼容性问题
查看>>
UITabbarViewController
查看>>
nginx 报错 upstream timed out (110: Connection timed out)解决方案
查看>>