2009-03-24 2 views
0

У меня есть разбиение на плитки, содержащее список текстовых полей и текстовых полей, я создал эти поля в пользовательском компоненте, используя следующий код;ActionScript 3 - получение текстовых значений из TexInput, созданных в компоненте

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++;  
     } 

пользователей могут редактировать значения в каждом поле TextInput, теперь мне нужно, чтобы получить вновь udpated значения, однако, как я могу доступ к этим полям? Поскольку идентификаторы создаются динамически, я не могу просто перейти к имени компонента. InputFieldName, любые идеи?

ответ

2

Я думаю, что вы ищете, getChildByName

позже редактировать: протестирована с флэш и TextField, и она работает:

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

так что мне нужно указать имя TextInput (например field1) в качестве параметра и возвращать DisplayObject, как я могу использовать экранный объект для получения текстовых значений? cheers – cduggan

+0

попробуйте typecast: TextInput (getChildByName ('field' + i)) – evilpenguin

+0

протестирован с Flash и TextField, и он works: trace (TextField (getChildByName ('textfield')))); – evilpenguin

1

Вы можете добавить обработчик событий для события CHALGE TileList; когда он срабатывает, я думаю, что свойство event.target будет иметь определенное поле TextInput. Кроме того, вы можете посмотреть свойство TileList.SelectedItem.

Возможно, у вас есть DataProvider, связанный с TileList вместо вашего кода, как показано на рисунке, который будет обрабатывать это автоматически для вас. Попробуйте просто назначить ваш массив NewTextLabels как dataProvider.

Смежные вопросы