as3从xml解析数据的问题

时间:2010-09-29 14:20:36

标签: actionscript-3

我正在尝试制作横幅,用户可以在xml文件中编辑其偏好设置。我的xml文件如下所示。

<billBoard>
    <items>
        <item>
            <imageUrl>images/plaatje_1.jpg</imageUrl>
            <imageShowTime>5</imageShowTime>
            <imageClickLink>http://www.google.nl</imageClickLink>
            <imageClickLinkTarget>_blank</imageClickLinkTarget>
            <animatiePosition>top</animatiePosition>
            <animatieEffectType>Cubic</animatieEffectType>
            <textboxen>
                <textbox>
                    <textFontSize>14</textFontSize>
                    <textFontColor>0xFFFFFF</textFontColor>
                    <textBgColor>0xFF0000</textBgColor>
                    <textBgOpicity>0.8</textBgOpicity>
                    <textPadding>10</textPadding>
                    <textAnimationDirection>left</textAnimationDirection>
                    <textAnimatieTime>2</textAnimatieTime>
                    <textAnimatieDelay>0.07</textAnimatieDelay>
                    <textXposition>200</textXposition>
                    <textYposition>300</textYposition>
                    <text>hier komt de tekst</text>
                </textbox>

                <textbox>
                    <textFontSize>18</textFontSize>
                    <textFontColor>#FF0080</textFontColor>
                    <textBgColor>0xFF0000</textBgColor>
                    <textBgOpicity>0.6</textBgOpicity>
                    <textPadding>12</textPadding>
                    <textAnimationDirection>right</textAnimationDirection>
                    <textAnimatieTime>3</textAnimatieTime>
                    <textAnimatieDelay>0.07</textAnimatieDelay>
                    <textXposition>200</textXposition>
                    <textYposition>300</textYposition>
                    <text>hier komt de tekst 2 van item 1</text>
                </textbox>

目标是我可以解析与文本框相关联的项目。

解析数据我在foor循环中使用for循环,如下所示:

_billboardData_array = new Array();

        for (var i:int = 0; i < xml.billBoard.items.item.length(); i++) {
            //hold the data of the billboardItems

            var billBoardData:Array = new Array();


            billBoardData['billBoardID'] = i;
            billBoardData['imageUrl'] = xml.billBoard.items.item[i].imageUrl;
            billBoardData['imageShowTime'] = xml.billBoard.items.item[i].imageShowTime;
            billBoardData['imageClickLink'] = xml.billBoard.items.item[i].imageClickLink;
            billBoardData['imageClickLinkTarget'] = xml.billBoard.items.item[i].imageClickLinkTarget;
            billBoardData['animatiePosition'] = xml.billBoard.items.item[i].animatiePosition;

            trace("<---" + billBoardData['imageUrl'] + "--->");
            for (var j:int = 0; j < xml.billBoard.items.item[i].textboxen.textbox.length(); j++) {

                billBoardData['textFontSize'] = xml.billBoard.items.item[i].textboxen.textbox.textFontSize[j];
                trace(billBoardData['textFontSize'] = xml.billBoard.items.item[i].textboxen.textbox.textFontSize[j]);
            }


            //trace(item.textboxen[i].textbox.length());

            _billboardData_array[i] = billBoardData;


       }    
        }

        public function get billboardData_array():Array { return _billboardData_array; }

当我解析这个时,我得到了正确的结果,如:

&LT; ---图像/ plaatje_1.jpg ---&GT; 14 18 三十 &LT; ---图像/ plaatje_2.jpg ---&GT; 20 26

这意味着图像1有三个带有fontsize的文本框:14,18,30。

现在我遇到了以下问题。

你可以看到我从我的billboardData_array中获取函数我想在其他类中调用这个get函数来获取我需要的正确数据。

现在我做了一个示例函数,如:

public function showBla():void {
        trace("show bla functie");
        trace(swisBillBoardData.billboardData_array[0]['textFontSize']);

    }

此函数返回最后的fontsize但我需要遍历它以在舞台上显示文本。

我希望有人能帮助我解决这个问题。

非常感谢

1 个答案:

答案 0 :(得分:0)

它是固定的:)。问题是我每次循环通过texbox时都会重写数组。