компонент списка as3 - PullRequest
       17

компонент списка as3

0 голосов
/ 10 ноября 2010

Мой компонент списка по какой-то причине не отображает данные, извлекаемые из XML-файла. Вот код, хотя, когда я выполняю трассировку массива «question1», я получаю значения.Может ли кто-нибудь сказать мне, что я здесь не так делаю?

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].@idno);
          trace(question1);

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

1 Ответ

1 голос
/ 10 ноября 2010

При доступе к свойству xml возвращаемое значение печатается как XMLList, который fl.data.DataProvider не обрабатывает при построении своего внутреннего массива.Попробуйте:

question1.push(myXML.questions[i].@idno.toString());

Другой вариант - позволить DataProvider создавать данные прямо из xml, но вам, вероятно, понадобится labelField или labelFunction, попробуйте что-то вроде этого:

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

Кроме того, вы можете захотеть получить доступ к узлу вопроса в обработчике щелчков элементов, в этом случае вы можете создать свой исходный массив следующим образом:

question1.push({
    label:myXML.questions[i].@idno.toString(),
    data:myXML.questions[i]
});
...