构建数组时是否可以调用函数?

时间:2010-08-16 21:39:39

标签: flex function arraycollection

我可以在Flex 3中构建数组时调用函数吗?

public function gridBuilder(myArray:Array):void {
            var i:uint; 
            for (i=0; i<myArray.length; i++){

            dGArray = [
                {Name: myArray[i].name, Type: 'A:', Score: myArray[i].score, Rank: myArray[i].rank, Grade:(myFunction(myArray[i].rank, myArray[i].max_rank))},
                {Name: myArray[i].name, Type: 'B:', Score: myArray[i].score, Rank: myArray[i].rank }
                                    ]   

                    }

                      dgAC = new ArrayCollection(dGArray);

                }

MyArray是远程调用数据库的结果。然后我准备要在dataGrid中使用的数组。我也想调用一个提供成绩的功能。不幸的是,我的功能似乎只被调用一次。在构建数组时是否可以调用函数?请参阅“等级:”位。有什么问题?我该如何解决这个问题?

谢谢!

-Laxmidi

1 个答案:

答案 0 :(得分:0)

你说你的功能只被调用一次。然而在你的代码中,你只是明确地调用它一次。我无法看到您的问题。在ActionScript中,您可以创建一个对象数组,其中属性值可以来自函数的返回值。

编辑更改您的代码以执行此操作:

public function gridBuilder(myArray:Array):void {
    var i:uint; 
    var dGArray:Array = [];

    for (i=0; i<myArray.length; i++) {
        dgArray.push({Name: myArray[i].name,
                      Type: 'A:',
                      Score: myArray[i].score,
                      Rank: myArray[i].rank,
                      Grade:myFunction(myArray[i].rank,myArray[i].max_rank)});
        dgArray.push({Name: myArray[i].name,
                      Type: 'B:',
                      Score: myArray[i].score,
                      Rank: myArray[i].rank});
    }
    dgAC = new ArrayCollection(dGArray);
}

您原始代码的问题在于您在每次迭代时都会重置dGArray