2011-01-11 15 views
1

Ich möchte Instanz von mxml (in meinem Fall EventList) erstellen und Parameter übergeben. Meine Event-Liste ist eine Liste von Panels, so dass ich Parameter übergeben und dynamisch n Anzahl von Panels generieren möchte (N-Parameter zum Bestehen). Ich habe die Haupt-App, wo ich Knopfleiste umschalten kann, wenn ich auf die erste Schaltfläche klicke, um beispielsweise 3 Panels (n = 3) auf der zweiten Schaltfläche 20 Panels (n = 20) usw. zu generieren. Wie kann ich das machen? Wie kann ich n übergeben und was ist der beste Weg, die Liste zu zeigen? Ich erzeuge die Liste, wenn ich auf den Schalter klicke!Wie mache ich eine Instanz von mxml und übergebe Parameter?

Antwort

2

Verwenden Sie xmlnamespace (xmlns), um auf die mxml-Datei in Ihrem Quellordner zuzugreifen.Ich habe eine Anwendung erstellt, die xmlns = "*" enthält (* bedeutet, dass Sie auf jede Komponente im Quellordner zugreifen können), um auf die myEvenList-Komponente zuzugreifen. Ich gebe den n-Wert hier selbst. Schauen Sie sich das Beispiel an.

togglePanelCount.mxml

<?xml version="1.0" encoding="utf-8"?> 
    <mx:Application name="ToggleButtonBar_toggleOnClick_test" 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="vertical" 
    verticalAlign="top" 
    backgroundColor="white" xmlns:eventList="*">         <mx:ToggleButtonBar id="toggleButtonBar" 
        dataProvider="{viewStack}" /><mx:ViewStack id="viewStack" 
     width="100%" 
     height="100%"> 
    <eventList:myEventList n="5" id="List1"/> 
    <eventList:myEventList n="20" id="List2"/> 
</mx:ViewStack></mx:Application> 

myEvenList.mxml

  <?xml version="1.0" encoding="utf-8"?><mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="createPanels()"><mx:Script> 
    <![CDATA[ 
     import mx.controls.Alert; 
     import mx.containers.Panel; 
     public var n:int; 
     public function createPanels():void{ 
     Alert.show("in create panel"); 
     for(var i:int =0 ;i<n;i++){ 
      var panel:Panel = new Panel(); 
      panel.title = "panel"+(i+1); 
      panelList.addChild(panel); 
      } 
      } 
    ]]> 
</mx:Script><mx:VBox id="panelList" /></mx:Canvas> 

PS: n als öffentliches Attribut selbst gibt Ihnen eine Möglichkeit, die Anzahl der panels.Even der Weitergabe in Mit dem mx: Script-Tag in der Anwendung können Sie das myEventList-Objekt instanziieren und den Wert von n festlegen, anstatt mxml-Tags zu verwenden.

Verwandte Themen