我正在使用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循环的初学者,但还不理解,所以感谢评论!
答案 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]会找到第一个元素。
由您来决定哪个更适合您的目的。