应该如何在AS3循环中编写?

时间:2010-12-27 22:54:42

标签: actionscript-3 loops for-loop

我有一个php函数,它将一个简单的数组收集(称为QuestionSeries)引入FlashBuilder,其中包含各种值,包括“Answers”和“Results”,我需要的格式可用于FlashBuilder 4饼图,另一个数组收集(称为ChartData)看起来像:

ChartData = [0-> [Answer-> {Answer},Result-> {Result}],1-> [Answer-> {Answer},Result-> {Result}], 2-> [答案 - > {答案},结果 - > {结果}],...]

但是,我需要调用的[{Answer},{Result}]对的数量取决于QuestionSeries arraycollection中存在的数量,尽管这个数字在QuestionSeries中由值“Num_Options”给出

所以,目前我有一些看起来像这样的脚本:

    protected function graphsetup():void{   

    if(QuestionSeries.Num_Options>=1)
    {                   
        ChartData.addItem({Answer:QuestionSeries.Ans01, Result:QuestionSeries.Ans01_n})
    }
    if(QuestionSeries.Num_Options>=2)
    {                   
        ChartData.addItem({Answer:QuestionSeries.Ans02, Result:QuestionSeries.Ans02_n})
    }
    if(QuestionSeries.Num_Options>=3)
    {                   
        ChartData.addItem({Answer:QuestionSeries.Ans03, Result:QuestionSeries.Ans03_n})
    }
     ...

目前还没有,因为我只有2到6个答案,但是a)这显然不是最佳的,即使在目前而且b)在某些时候我可能有多达100个答案。所以我基本上想把它变成一个聪明的for-或while循环,但是我的ActionScripting技能并不是非常坦率地说,我希望有人可以指出我正确的方向?

我很挣扎,因为我无法陈述"QuestionSeries.Ans[i]"...,这是我最初尝试的关键。

我认为一种方法可能是对原始的QuestionSeries数组进行排序(所有必需的值都在Ans [i]和Ans [i] _n下,所以当按索引按字母顺序排序时它们相邻)然后弹出或移动元素它,但在动作能力方面相当无能......我无法使其发挥作用。

非常感谢,我真的很感激任何人可能对这个主题说些什么。

约什

1 个答案:

答案 0 :(得分:3)

我认为你应该重新考虑一下arraycollection中的结构和命名约定,以便更容易地进行迭代。您想要迭代的事物从1开始并包含前导零。我认为最好将所有答案和结果作为元组包含在一个简单的索引数组中。

如果这不是一个选项,你可以使用以下内容:

protected function addLeadingZero(number:int):String {
    if (number > 10) return number.toString();
    return "0" + number.toString();
}

protected function graphSetup():void {
    for (var i:int, l:int = int(QuestionSeries.Num_Options); i < l; i++) {
        ChartData.addItem({
            Answer:QuestionSeries["Ans" + addLeadingZero(i + 1)], 
            Result:QuestionSeries["Ans" + addLeadingZero(i + 1) + "_n"]
        });
    };
}