2009-12-09 4 views
1

J'essaie de développer un composant personnalisé pour agir comme un diviseur.Configuration des enfants content pour le composant mxml personnalisé

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

Je voudrais utiliser ce composant pour affecter des objets comme celui-ci:

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

Malheureusement, cela ne fonctionne pas. Je reçois une erreur de compilation en disant: Dans l'initialiseur pour «gauche»: plusieurs valeurs d'initialisation pour le type cible mx.containers.Canvas.

Qu'est-ce qui me manque?

Répondre

2

J'ai fini par trouver la solution lisant le following à partir du site Web d'Adobe. En utilisant la technique décrite comme composant de modèle, vous pouvez spécifier un tableau d'un certain type d'objets. J'ai fini par réécrire mon composant comme suit:

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

Cela fonctionne maintenant comme prévu.

Questions connexes