2009-12-09 36 views
1

我正在嘗試開發自定義組件以充當分隔線。爲自定義mxml組件設置內容子項

<?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> 

不幸的是,這是行不通的。我得到一個編譯器錯誤: 在「左」的初始值設定項中:目標類型爲mx.containers.Canvas的多個初始化值。

我缺少什麼?

回答

2

我最終從Adobe網站上找到了解following的解決方案。

使用描述爲模板組件的技術,可以指定特定類型對象的數組。我最終重寫我的組件如下:

<?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> 

它現在按預期工作。

相關問題