在Class中的使用Accordion的child Symbol问题

  • 本站文章除注明转载外,均为本站原创或者翻译。
  • 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商;
  • 本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载;
  • 本博客采用 WPCMD 维护;
  • 本文标题:在Class中的使用Accordion的child Symbol问题
  • 本文链接:http://zengrong.net/post/13.htm

chat Union项目中,使用Accordion组件显示主持人列表和客人列表,这个组件放在一个Movie Clip中,实例名称为actorListac。这个Movie Clip关联ActorList类。它将2个List组件作为自己的child Symbol。一个实例名称为emceelist,一个实例名称为roomlist。

ActorList类的主要内容如下:

 import mx.controls.List;
  import mx.containers.Accordion;
 class ActorList {
    private var actorListac:Accordion;
    function ActorList(){
    }
    private function onLoad(){
        var accw = actorListac.width-2;
        var acch = actorListac.height-22*2; //每个标题22像素高,共两2个标题
        actorListac.roomlist.setSize(accw,acch);
        actorListac.emceelist.setSize(accw,acch);
    }
    public function reFresh(arr:Array, at:String):Void{
        //at:要刷新的列表类型,值为emcee或room
        actorListac[at+"list"].removeAll();
        for(var i in arr){
            actorListac[at+"list"].addItem(arr[i]);
        }
    }
}

编译的时候出现了错误:

错误 第 26 行: 没有名为’roomlist’的属性。
actorListac.roomlist.setSize(accw,acch);

这是很让人费解的。因为使用调试器查看程序结构的时候,明明是可以看到roomlist是处于actorListac之中,但却不能够访问?

为了确定Accordion组件确实可以使用这种访问方式,我做了一个简单程序进行测试:

var accw = actorListac.width-2;
var acch = actorListac.height-22*2; //每个标题22像素高,共两2个标题
actorListac.list1.setSize(accw,acch);
actorListac.list2.setSize(accw,acch);

仅就这个程序而言,我的访问方式没有一点问题。

无奈改了一种访问方式,将 actorListac.roomlist.setSize(accw,acch); 改为了
actorListac["roomlist"].setSize(accw,acch); ,没想到居然就可以了!