2011-10-21 4 views
0

XMLソースからデータを読み込んだ後、ボタンをクリックするたびにデータからランダムな項目を1つ表示することができます。私はデータを配列に格納し、配列から使用することでこれを達成できると思います。
可能であれば、xmlから別の配列に格納せずに直接実行する方法を学びたいと思います。私が正しく質問を理解している場合事前に感謝as3ランダムに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]); 
      } 

} 

答えて

0

、あなたはグローバル変数としてに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

私はロードに問題があるか、ない – mustafa

+0

に直面していないevent.completeを使用する必要がありますかはい、それが必要ですこのイベントではXMLコンテンツを取得するためです。 – Bartek

+0

はい...私はそれを得ました。どうもありがとうございました。 – mustafa

0

は:

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 一覧と呼ばれていますが、それは実際には配列だと、よりまだ、それは(密)真配列です、 Arrayクラス(配列と文字列ハッシュの組み合わせ)とは異なります。したがって、配列に変換する必要はありません。インデックスを使用して要素にアクセスすることは問題ありません。あなたがにMyXML変数から直接これを行うことができます

関連する問題