2009-03-24 3 views
0

Ich habe ein Kachellayout mit einer Liste von TextInputs und Textfeldern. Diese Felder habe ich in einer benutzerdefinierten Komponente mithilfe des folgenden Codes erstellt.ActionScript 3 - Abrufen von Textwerten aus TexInput erstellt in der Komponente

var newTextInputs:Array = []; 
     var newTextLabels = []; 
     var space:Number = 30; 
     var count:Number = 0; 
     for (var i:String in columnsData) 
     { 
      //create text labels 
      var label:Text = new Text(); 
      label.name = "label" + count; 
      label.text = i; 
      newTextLabels[count] = label; 
      addChild(newTextLabels[count]); 

      // create text fields 
      var field:TextInput = new TextInput(); 
      field.name = "field" + count; 
      field.width = 100; 
      field.height = 25; 
      field.text = columnsData[i]; 
      newTextInputs[count] = field; 
      addChild(newTextInputs[count]); 
      count++;  
     } 

Benutzer die Werte bearbeiten in jedem TextInput- Feld erlaubt sind, jetzt brauche ich die neu udpated Werte jedoch abrufen, wie ich diese Felder zugreifen kann? Da die Bezeichner dynamisch erstellt werden, kann ich nicht einfach componentName.InputFieldName, irgendwelche Ideen?

Antwort

2

Ich denke, was Sie suchen getChildByName ist

später bearbeiten: getestet mit Flash und TextField- und es funktioniert:

trace(TextField(getChildByName('textfield')).text); 
+0

so brauch ich den Namen der Textinput spezifizieren (zB field1) als Parameter und gebe ein DisplayObject zurück, wie benutze ich dann das Anzeigeobjekt um die Textwerte zu bekommen? cheers – cduggan

+0

versuche eine typecast: TextInput (getChildByName ('field' + i)) – evilpenguin

+0

getestet mit Flash und TextField und es funktioniert: trace (TextField (getChildByName ('textfield')). text); – evilpenguin

1

Sie können einen Ereignishandler für das TILELIST CHANGE-Ereignis hinzufügen. Wenn es ausgelöst wird, denke ich, dass die Eigenschaft event.target über das spezifische Feld TextInput verfügt. Alternativ können Sie die TileList.SelectedItem-Eigenschaft anzeigen.

Möglicherweise können Sie auch einen DataProvider an die TileList binden, anstatt wie gezeigt den Code, der dies automatisch für Sie erledigt. Versuchen Sie, nur Ihr NewTextLabels-Array als DataProvider zuzuweisen.