使用forEach循环添加实例名称以添加动画片段

时间:2013-03-24 04:28:41

标签: actionscript-3 xml-parsing foreach instance

我正在使用forEach循环,为我的XML中的每个节点添加动画片段到舞台。如何在循环中添加这些动画片段的唯一实例名称?

这是我的parseList函数,它包含所提到的forEach循环和我正在使用的语法,这对我来说不起作用。

private function parseList():void {
    //use Number variables to keep track of current x and y properties as list display is generated
    var titleField:TextField = TextField(listItem);
    var itemY:Number = 503;
    var itemX:Number = 0;
    var artistTracker:String = Playmaster_Jukebox.currArtist;
    var artID = 0;
    var albID = 0;

    var itemID:Number=0;
    for each (var listItemData:XML in mainXML.artist[artID].album[albID].track) {

        var listItem:MovieClip = new ListItem(itemTitle);
        listContainer.addChild(listItem);
        listItem.name = "itemID" + " " + albID + " " + itemID;
        itemID++;

        listItem.y = itemY;
        listItem.x = itemX;

        TextField(listItem.listItemTitleField);
        itemY += listItem.height + 10;
    }
}

我是forEach循环的初学者,但还不理解,所以感谢评论!

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题;那么当你从XML文档中读取它们时,你会问如何存储“listItem”MovieClips。

要做到这一点,你可能想要使用数组或地图:

使用数组即:

var listItemArray:Array = new Array();
for each (var listItemData:XML in mainXML.artist[artID].album[albID].track) {
        var listItem:MovieClip = new ListItem(itemTitle);
        listContainer.addChild(listItem);

        listItemArray.push(listItem);// adds the item to the array
}

使用地图即:

var listItemMap:Object = {};
for each (var listItemData:XML in mainXML.artist[artID].album[albID].track) {
         var listItem:MovieClip = new ListItem(itemTitle);
         listContainer.addChild(listItem);
         listItem.name = "itemID" + " " + albID + " " + itemID;

         listItemMap[listItem.name];// adds an item by the .name you created for it.
}

地图将允许您按照您给出的不同项目的名称查找项目。即:listItemMap [“name”]将找到名为“name”的元素。

数组将允许您按顺序循环遍历它们。 ie:listItemArray [0]会找到第一个元素。

由您来决定哪个更适合您的目的。