【问题标题】:as3 accessing XML data randomlyas3 随机访问 XML 数据
【发布时间】:2011-10-21 09:32:12
【问题描述】:

从 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]);
            }

}

【问题讨论】:

    标签: xml arrays actionscript-3


    【解决方案1】:

    您可以直接从 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];
    }
    

    【讨论】:

    • 我是否需要使用 event.complete 才不会遇到加载问题
    • 是的,这是必要的,因为在这种情况下你会得到你的 xml 内容。
    • 是的……我明白了。非常感谢。
    • 我已经编辑了我的代码,让你看看它的样子
    • -1 全局变量通常是不好的做法。不惜一切代价避免它们。在这种情况下,可以肯定的是,myXML 没有充分的理由成为全球性的。
    【解决方案2】:

    如果我正确理解了这个问题:

    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 类:)(它是一个数组和字符串的混合哈希)。所以通过索引访问元素没有问题 - 无需转换为数组。

    【讨论】:

      猜你喜欢
      • 2012-08-12
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-15
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多