Во-первых: ваш ввод может быть нулевым, поэтому сначала проверьте нулевое значение, и, я думаю, в этом случае верните нулевое значение.
Во-вторых: после создания массива одинакового размера необходимо выполнить итерацию ввода и для каждого индекса проверить две вещи:
Готово?
Ищите документацию относительно цикличного выполнения Flex 3. Если Вы сделаете, то Вы найдете это:
for..in
for..in
цикл выполняет итерации через свойства объекта или элементы массива. Например, можно использовать для.. в цикле для итерации через свойства родового объекта (свойства объектов не сохранены ни в каком конкретном порядке, таким образом, свойства могут появиться в на вид произвольном порядке):
var myObj:Object = {x:20, y:30};
for (var i:String in myObj)
{
trace(i + ": " + myObj[i]);
}
// output:
// x: 20
// y: 30
Вместо того, чтобы пытаться создать поле ввода для каждого объекта, я предложил бы, чтобы Вы смотрели на DataGrid и пользовательский ItemEditors.
Можно записать это как actionscript, но включать его в mxml файле с тегом script:
<mx:Script>
<![CDATA[
public function LoopAndPrint() : void
{
//your code here
}
]]>
</mx:Script>
Проблема с "for ... in" в том, что он выполняет итерацию только для динамических свойств. То есть, если ваш объект определен как класс (а не динамически), "for..in" ничего не даст.
В документации ActionScript предлагается использовать describeType () для фиксированных свойств, но это выглядит слишком большим. сложно для этой простой задачи…
Я согласен, что этот ответ бесполезен. Он работает только с общими объектами, а не с объявленными пользователем объекты.
Однако вот некоторый код, который должен / мог бы работать с описанием типа, как предложено выше. (И я не думаю, что это слишком сложно). Имейте в виду, что доступны только общедоступные свойства / методы и т. Д.:
var ct:CustomObject = new CustomObject();
var xml:XML = describeType(ct);
for each(var accessor in xml..accessor) {
var name:String = accessor.@name;
var type.String = accessor.@type;
trace(ct[name]);
}