as3 получает случайный доступ к данным XML - PullRequest
0 голосов
/ 21 октября 2011

После прочтения данных из источника XML мне нравится иметь возможность показывать один случайный элемент из данных всякий раз, когда, скажем, нажимают кнопку. Я думаю, что я могу сделать это путем сохранения данных в массиве и использовать их из массива.
Я хотел бы узнать, если это возможно, чтобы сделать это непосредственно из XML, не сохраняя его в другом массиве. Заранее спасибо

var myXMLLoader:URLLoader = new URLLoader();
myXMLLoader.load(new URLRequest("XML_NOTES.xml"));
myXMLLoader.addEventListener(Event.COMPLETE, processXML);


function processXML(e:Event):void {
            var loader:URLLoader = e.target as URLLoader;
            var myXML:XML = new XML(loader.data);
            for (i=0;i<2;i++){
            trace(myXML.LEMMA[i]);
            array.push(myXML.LEMMA[i]);
            }

}

Ответы [ 2 ]

0 голосов
/ 21 октября 2011

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

var myXML:XML;
var myXMLLoader:URLLoader = new URLLoader();
myXMLLoader.load(new URLRequest("XML_NOTES.xml"));
myXMLLoader.addEventListener(Event.COMPLETE, processXML);

function processXML(e:Event):void {
    var loader:URLLoader = e.target as URLLoader;
    myXML = new XML(loader.data);
}

function getRandomItem():XML {
    var elementsCount:int = myXML.LEMMA.length();
    var randomIndex:int = Math.floor( Math.random() * (elementsCount-1) );
    return myXML.LEMMA[randomIndex];
}
0 голосов
/ 21 октября 2011

Если я правильно понял вопрос:

function processXML(event:Event):void
{
    var myXML:XML = XML((e.target as URLLoader).data);
    var children:XMLList = myXML.*;
    trace(children[Math.random() * children.length()].toXMLstring());
}

Обратите внимание, что хотя он и называется XML List , на самом деле это массив, но еще больше, это настоящий массив (плотный), в отличие от класса Array :) (который представляет собой смесь массива и строкового хэша). ). Таким образом, нет проблем с доступом к элементу по индексу - нет необходимости преобразовывать в массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...