Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Рандомный выбор из XML (http://www.flasher.ru/forum/showthread.php?t=153321)

Welcometo 31.03.2011 21:15

Рандомный выбор из XML
 
Всем доброго времени суток. Делаю программу - тест. Собственно вопрос в заголовке - как рандомно выбрать элемент из xml файла(неповторяющийся)?
У самого только одна идея. Псле получения xml, он пробразуется в коллекцию. Затем получать рандомное число i (скажем, из массива целых чисел длиною равной длине xml коллекции, а затем удалять этот элемент из массива(чтобы не повторялось)). а затем выводить XMLList[i]= questionLabel.text . Есть у кого каие варианты ? Буду благодарен любой помощи.

bav 01.04.2011 01:49

Чем плох предложенный вами вариант? Вот, скажем, он же в коде (код кривой, но рабочий).
Код AS3:

package 
{
    import flash.display.Sprite;
    import flash.events.Event;
 
    public class TestProject extends Sprite
    {
        public function TestProject():void
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }
 
        private function init(event:Event = null):void
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // Тестовая XML
            var xmlString:String = '<?xml version="1.0" encoding="UTF-8"?><data><question>Where is my mind?</question><question>So what?</question><question>No fun?</question></data>';
            var xml:XML = new XML(xmlString);
            // Создаем массив
            var questions:Array = [];
            // Заносим в него вопросы
            for (var i:int = 0; i < 3; i++) questions[i] = xml.question[i];
            // Выводим вопросы в случайном порядке
            var index:int;
            for (var j:int = 2; j >= 0; j--) {
                index = Math.round(Math.random() * j);
                trace(questions[index]);
                questions.splice(index, 1);
            }
        }
 
    }
}


wvxvw 01.04.2011 03:52

Типы XML и String в AS3 конвертируются друг в друга, кроме того, в AS3 можно использовать литерал XML. Т.е.
Код AS3:

var foo:XML = <foo/>;

это вполне обычный AS3 код.
Что до задачи: XMLList в чем-то очень похож на массив.
Код AS3:

var list:XMLList = <><foo/><bar/><baz/></>;
var position:int;
while (list.length())
{
    position = Math.random() * list.length();
    trace(list[position]);
    delete list[position];
}



Часовой пояс GMT +4, время: 20:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.