2010-11-10 42 views
0

我的列表組件由於某種原因不顯示正在從xml文件中提取的數據 即使當我對「question1」進行跟蹤時,以下代碼仍然存在。 任何人都可以告訴我我在這裏做錯了什麼?列表組件as3

import fl.controls.List; 
    import fl.data.DataProvider; 
    var myXML:XML; 
    var list:List = new List ;// new list item 
     var question1:Array = new Array(); 
     var myLoader:URLLoader = new URLLoader(); 
     myLoader.load(new URLRequest("quiz1.xml")); 
     myLoader.addEventListener(Event.COMPLETE, processXML); 
     function processXML(e:Event):void 
     { 
     myXML = new XML(e.target.data); 
     list.setSize(200,200); 
     var xpos = (stage.stageWidth/2) - (list.width/2); 
     var ypos = (stage.stageHeight/2) - (list.height/2); 
     list.move(xpos,ypos); 

     for (var i:int=0; i<myXML.*.length(); i++) 
     { 

      question1.push(myXML.questions[i][email protected]); 
      trace(question1); 

     } 
     list.dataProvider=new DataProvider(question1); 
     addChildAt(list,0); 
     } 

回答

1

當訪問的XML屬性,返回值的類型是其中的XMLList建立其內部陣列時fl.data.DataProvider不處理。試試這個:

question1.push(myXML.questions[i][email protected]()); 

另一種選擇是讓DataProvider的權從XML構建數據,但是你可能需要使用labelField或labelFunction屬性,嘗試這樣的事情:

list.dataProvider=new DataProvider(myXML); 
list.labelField = "idno"; 

而且,您可能想要訪問項目單擊處理程序中的問題節點,在這種情況下,您可以像這樣構建源數組:

question1.push({ 
    label:myXML.questions[i][email protected](), 
    data:myXML.questions[i] 
});