【问题标题】:how to clone UIComponents added dynamically in a Canvas如何克隆在画布中动态添加的 UIComponents
【发布时间】:2013-08-28 13:15:23
【问题描述】:

我在将 Canvas 中动态添加的 UIComponents 克隆到另一个 Canvas 时遇到问题。

我遵循这个例子,但它不适用于动态添加的组件,因为在这个场景中 childDescriptors 变为 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>

【问题讨论】:

    标签: apache-flex canvas adobe flash-builder flashdevelop


    【解决方案1】:

    我从未使用 childDescriptors 克隆对象,但您可能会尝试在描述符设置为 null 之前进行克隆,或者至少在此之前复制描述符。

    在实例化 MXML 对象的过程中,描述符可能设置为 null。因此,您应该能够在此之前获得描述符。

    尝试使用“initialize”甚至“preinitialize”事件,该事件将由您希望克隆其子级的对象调度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-20
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 2017-06-14
      • 2018-03-05
      • 2017-08-19
      • 2012-10-17
      相关资源
      最近更新 更多