2013-03-24 42 views
0

我正在使用forEach循環將movieclip添加到我的XML中每個節點的舞臺上。如何將這些影片剪輯的獨特實例名稱作爲它們添加到循環中?將實例名稱添加到使用forEach循環添加的影片剪輯中

這裏是我的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

你的問題不清楚:你有什麼問題?此外,什麼'TextField(listItem.listItemTitleField);'應該做的?爲什麼你使用'for each'循環,而'listItemData'永遠不會被使用?什麼是'listItem'。您還應該提供您正在使用此示例解析的XML示例。 – duTr 2013-03-24 06:26:24

回答

0

如果我正確理解你的問題;那麼當您從XML文檔中讀取它們時,您會問如何存儲「listItem」MovieClip。

要做到這一點,你可能會想使用數組或一個地圖:

使用數組即:

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」的元素。

該數組將允許您按順序循環它們。即:listItemArray [0]會找到第一個元素。

這取決於你決定哪個更適合你的目的。

相關問題