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>
它现在按预期工作