- ベストアンサー
クイズ作成に関するXML形式の問題のランダム読み込み方法
- 外部のXMLファイルからランダムに問題を読み込み、重複させないようにクイズ作成する方法について説明します。
- flashファイルでXMLファイルを読み込んだ後、ランダムに出題するためにはMath.randomを使用します。
- 質問者は経験が不足しており、どのようにランダムに出題できるかわからないとのことです。ご教示いただけますか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ランダムに5問を出題するルール(どのように出題するのか)がわかりませんが, 例えば, name_txt0 value_txt0 name_txt1 value_txt1 name_txt2 value_txt2 name_txt3 value_txt3 name_txt4 value_txt4 というインスタンス名を持つテキストフィールドを用意して, [test4 ] [3 ] [test1 ] [0 ] [test6 ] [5 ] [test3 ] [2 ] [test2 ] [1 ] のようにランダムな表示をさせたいのでしたら, 次のような感じのスクリプトになると思います。 次のスクリプトはテキストフィールド自体もActionScriptで作成する例です。 ------------------------------------------ // XMLインスタンス a_xml の作成 var a_xml:XML = new XML(); // ランダムな数を入れる配列の作成 var randomArr:Array = new Array(); // XML ロード時の動作を定義 a_xml.onLoad = function() { // firstChild ノードを top とする var top:XMLNode = a_xml.firstChild; // topノードのノード数を len に代入しておく var len:Number = top.childNodes.length; //ランダム配列に 0, 1, 2, 3, …,len-1 を代入 for (var i:Number = 0; i<len; i++) { randomArr[i] = i; } // 元の配列をランダムシャッフル for (i=0; i<len; i++) { // 0 以上 len-i 未満の整数の乱数を取得 var j:Number = Math.floor(Math.random()*(len-i)); // randomArr[len-1-i] と randomArr[j] を入れ替える var k:Number = randomArr[len-1-i]; randomArr[len-1-i] = randomArr[j]; randomArr[j] = k; } // i = 0 ~ 4 でループ for (i=0; i<5; i++) { // --- ↓手動で作成する場合は以下不要↓ --- // テキストフィールド name_txt0~5 を作成 _root.createTextField("neme_txt"+i, i, 10, i*30+10, 140, 20); _root["neme_txt"+i].border = true; // テキストフィールド value_txt0~5 を作成 _root.createTextField("value_txt"+i, i+5, 160, i*30+10, 20, 20); _root["value_txt"+i].border = true; // --- ↑手動で作成する場合は以上不要↑ --- // top.childNodes[ランダム] ノードを item とする var item:XMLNode = top.childNodes[randomArr[i]]; // name_txt0~5 にランダムな name 属性を表示 _root["neme_txt"+i].text = item.attributes.name; // value_txt0~5 にランダムな value 属性を表示 _root["value_txt"+i].text = item.attributes.value; } }; // 余分な余白などを無視 a_xml.ignoreWhite = true; // 外部XML ファイルのロード a_xml.load("xml/test.xml"); ------------------------------------------ 「配列を偏りなくランダムに並替える」 http://www.fumiononaka.com/TechNotes/Flash/FN0212003.html Google検索「配列アクセス演算子」 http://www.google.co.jp/search?hl=ja&q=%E9%85%8D%E5%88%97%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%BC%94%E7%AE%97%E5%AD%90
お礼
返事遅れて申し訳ございません。丁寧な解説ありがとうございます。いろいろと試行錯誤しながら徐々に理解できております。参考になりました。