我在克服在Canvas中动态添加到另一个Canvas的UIComponents时遇到了一个问题。
我遵循这个示例,但它不适用于动态添加的组件,因为childDescriptors在此senario中变为null。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">
<mx:Script>
<![CDATA[
private function cloneButton_clickHandler (event:MouseEvent):void
{
var childDescriptors:Array = original.childDescriptors;
var descriptorsCount:int = childDescriptors.length;
for (var i:int; i < descriptorsCount; i++)
{
cloned.createComponentFromDescriptor(original.childDescriptors[i],
false);
}
cloned.validateNow();
}
]]>
</mx:Script>
<mx:Button label="Clone Canvas" click="cloneButton_clickHandler(event);" />
<mx:Canvas id="original" width="100" height="100" borderStyle="solid" >
<mx:Label text="Some Label" />
<mx:ComboBox dataProvider="{['data1', 'data2']}" bottom="0" />
</mx:Canvas>
<mx:Canvas id="cloned" width="100" height="100" borderStyle="solid" >
</mx:Canvas>
</mx:Application>
答案 0 :(得分:-1)
我从未使用childDescriptors克隆对象,但您可能会在描述符设置为null之前尝试进行克隆,或者至少在此之前复制描述符。
在实例化MXML对象的过程中,描述符可能设置为null。所以你应该能够在这之前得到描述符。
尝试使用“初始化”甚至“预初始化”事件,该事件将由您希望克隆子项的对象调度。