在flex函数中传递参数

时间:2010-06-24 17:58:26

标签: flex

我有一些特定形式的TextInputs,它们已按增量顺序分配了id。例如:

<s:TextInput id = "index1"/>
<s:TextInput id = "index2"/>
<s:TextInput id = "index3"/>

根据某些条件,我从相应的TextInput中选择文本,并将值(index#.text)传递给函数

 foo(var index:String)

如果我只使用了一个我可以使用的TextInput:

foo(index1.text)

有人可以建议我如何使用其id传递textInput。

谢谢。

-H

1 个答案:

答案 0 :(得分:0)

我加上一个'某些条件'的请求。您发布了一个事实,即您无法按名称访问该组件,因此我正在根据该假设编写其余部分。

要访问组件的值并将该组件的参数传递给函数,您需要一个标识符或链接到该组件。如果您使用组件名称,这是最简单的。但是,这并非总是可行的。例如,Flextras日历组件创建并显示该月的日期。根据显示的月份,可能有28天,30天或31天。用唯一的名称访问它们是不切实际的。

这是ListBased类中的类似情况。在编译时,您不会知道您一次需要或拥有多少itemRenderer。

解决此问题的一种方法是拥有相关对象的数组(dayRenderers,itemRenderers,或者在您的情况下为TextInputs)。在进行处理时,您可以遍历数组并处理元素。像这样:

for (var x = 0; x<objectArray.length; x++){
   foo(objectArray[x].text); 
}

如果您不希望这样做,无论出于何种原因,您可以循环容器的子代,执行以下操作:

for (var x = 0; x<container.numChildren; x++){
  var object : Object = this.getChildat(x);
  if(object is TextInput){ foo(object.text) }
}

功能性,但有时可能有点单调乏味。这真的取决于你想要完成的事情。