AS3程序性。从XMl中随机排列组合框中项目的顺序

AS3程序性。从XMl中随机排列组合框中项目的顺序,xml,actionscript-3,random,combobox,Xml,Actionscript 3,Random,Combobox,我试图读取一个XML文件,并将所有元素以随机顺序添加到组合框中(我不知道如何做到这一点)。我在舞台上制作了一个名为Primary_CB的组合框。我的XML全部设置为以下格式 <data> <elements> <element1> <primary>Male Character</primary> </element1> <element1> <p

我试图读取一个XML文件,并将所有元素以随机顺序添加到组合框中(我不知道如何做到这一点)。我在舞台上制作了一个名为Primary_CB的组合框。我的XML全部设置为以下格式

<data>

<elements>

    <element1>
        <primary>Male Character</primary>
    </element1>
    <element1>
        <primary>Female Character</primary>
    </element1>

</elements>

</data>

男性角色
女性角色
我的AS3基本上读取XML文件并将内容填充到组合框中,如下所示

Primary_CB.prompt = "Items";

var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
var xmlAry:Array = new Array();
var xmlURL:Array = new Array();

xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.load(new URLRequest("IdeaElements.xml"));

function LoadXML(e:Event):void
{
    xmlData = new XML(e.target.data);
    trace(xmlData..primary.length());
    for (var i:uint=0; i<xmlData..primary.length(); i++)
    {
        xmlAry.push(xmlData..primary[i]);
        xmlURL.push(xmlData..url[i]);
        Primary_CB.addItem( { label: xmlAry[i], data:i } );
        Primary_CB.addEventListener(Event.CHANGE, action);
    }
}

function action(e:Event):void
{
    var no:Number = Number(Primary_CB.selectedItem.data);
    trace(xmlURL[no]);
}
Primary\u CB.prompt=“Items”;
var xmlLoader:URLLoader=新的URLLoader();
var xmlData:XML=newxml();
var xmlAry:Array=new Array();
var xmlURL:Array=new Array();
addEventListener(Event.COMPLETE,LoadXML);
load(新的URLRequest(“IdeaElements.xml”);
函数LoadXML(e:Event):void
{
xmlData=新的XML(e.target.data);
跟踪(xmlData..primary.length());

对于(var i:uint=0;i我将首先推送数组的所有元素,然后将它们洗牌,然后将它们添加到CB中。洗牌数组非常简单。只需在此处使用最上面的答案(但使用AS3语法):

(您可能会丢失Event.CHANGE eventListener&函数,除非您有其他计划使用它。)

Primary\u CB.prompt=“Items”;
var xmlLoader:URLLoader=新的URLLoader();
var xmlData:XML=newxml();
var xmlAry:Array=new Array();
var xmlURL:Array=new Array();
addEventListener(Event.COMPLETE,LoadXML);
load(新的URLRequest(“IdeaElements.xml”);
函数LoadXML(e:Event):void
{
xmlData=新的XML(e.target.data);
跟踪(xmlData..primary.length());
var tempXMLAry:Array=new Array();
var tempUrlAry:Array=new Array();
变量i:uint;
对于(i=0;i
Primary_CB.prompt = "Items";

var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
var xmlAry:Array = new Array();
var xmlURL:Array = new Array();

xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.load(new URLRequest("IdeaElements.xml"));

function LoadXML(e:Event):void
{
    xmlData = new XML(e.target.data);
    trace(xmlData..primary.length());
    var tempXMLAry:Array = new Array();
    var tempUrlAry:Array = new Array();
    var i:uint;
    for (i = 0; i<xmlData..primary.length(); i++)
    {
        tempXMLAry.push(xmlData..primary[i]);
        tempUrlAry.push(xmlData..url[i]);
    }
    var tLen:int = tempXMLAry.length; // Store that value as it is here, because it will change during the loop
    for (i = 0; i < tLen; i++) {
        var rnd:int = Math.round(Math.random() * (tempXMLAry.length - 1));
        xmlAry.push(tempXMLAry[rnd]);
        xmlURL.push(tempUrlAry[rnd]);
        tempXMLAry.splice(rnd, 1);
        tempUrlAry.splice(rnd, 1);
    }
    for (i = 0; i < xmlAry.length; i++) {
        Primary_CB.addItem( { label: xmlAry[i], data:i } );
    }
    Primary_CB.selectedIndex = 0;
    Primary_CB.addEventListener(Event.CHANGE, action);
}

function action(e:Event):void
{
    var no:Number = Number(Primary_CB.selectedItem.data);
    trace(xmlURL[no]);
}