Apache flex 为自定义mxml组件设置内容子级

Apache flex 为自定义mxml组件设置内容子级,apache-flex,Apache Flex,我正在尝试开发一个自定义组件作为分隔器 <?xml version="1.0" encoding="utf-8"?> <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Canvas id="left"/> <mx:Canvas id="right"/> </mx:HBox> 我想使用此组件指定如下对象: <Divider> <lef

我正在尝试开发一个自定义组件作为分隔器

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml">
   <mx:Canvas id="left"/>
   <mx:Canvas id="right"/>
</mx:HBox>

我想使用此组件指定如下对象:

<Divider>
    <left>
        <mx:label text="Stuff I want to put in the left canvas"/>
        <mx:label text="etc..."/>
        <mx:label text="etc..."/>
    </left>

    <right>
        <mx:label text="Stuff I want to put in the right canvas"/>
        <mx:label text="etc..."/>
        <mx:label text="etc..."/>
    </right >
</Divider>

不幸的是,这不起作用。我收到一个编译器错误,提示: 在“left”的初始值设定项中:目标类型mx.containers.Canvas的多个初始值设定项值


我遗漏了什么?

我最终从Adobe网站上找到了解决方案

使用描述为模板组件的技术,可以指定特定类型对象的数组。我最终重写了我的组件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()">
    <mx:Script>
    <![CDATA[

       [ArrayElementType("mx.core.UIComponent")]
       public var right:Array;

       [ArrayElementType("mx.core.UIComponent")]
       public var left:Array;

       protected function init():void
       {
           var i:int;

           for (i = 0; i < left.length; i++)
               leftCanvas.addChild(left[i]);

           for (i = 0; i < right.length; i++)
               rightCanvas.addChild(right[i]);            
       }         

    ]]>
    </mx:Script>

    <mx:Canvas id="rightCanvas"/>
    <mx:Canvas id="leftCanvas"/>
</mx:HBox>

它现在按预期工作