在Class中的使用Accordion的child Symbol问题
chat Union项目中,使用Accordion组件显示主持人列表和客人列表,这个组件放在一个Movie Clip中,实例名称为actorListac。这个Movie Clip关联ActorList类。它将2个List组件作为自己的child Symbol。一个实例名称为emceelist,一个实例名称为roomlist。
ActorList类的主要内容如下:
1 import mx.controls.List;
2 import mx.containers.Accordion;
3 class ActorList {
4 private var actorListac:Accordion;
5 function ActorList(){
6 }
7 private function onLoad(){
8 var accw = actorListac.width-2;
9 var acch = actorListac.height-22*2; //每个标题22像素高,共两2个标题
10 actorListac.roomlist.setSize(accw,acch);
11 actorListac.emceelist.setSize(accw,acch);
12 }
13 public function reFresh(arr:Array, at:String):Void{
14 //at:要刷新的列表类型,值为emcee或room
15 actorListac[at+"list"].removeAll();
16 for(var i in arr){
17 actorListac[at+"list"].addItem(arr[i]);
18 }
19 }
20}
编译的时候出现了错误:
错误 第 26 行: 没有名为'roomlist'的属性。 actorListac.roomlist.setSize(accw,acch);
这是很让人费解的。因为使用调试器查看程序结构的时候,明明是可以看到roomlist是处于actorListac之中,但却不能够访问?
为了确定Accordion组件确实可以使用这种访问方式,我做了一个简单程序进行测试:
1var accw = actorListac.width-2;
2var acch = actorListac.height-22*2; //每个标题22像素高,共两2个标题
3actorListac.list1.setSize(accw,acch);
4actorListac.list2.setSize(accw,acch);
仅就这个程序而言,我的访问方式没有一点问题。
无奈改了一种访问方式,将 actorListac.roomlist.setSize(accw,acch);
改为了
actorListac["roomlist"].setSize(accw,acch);
,没想到居然就可以了!
- 文章ID:13
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/accordion01/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。