現在、クイズを作っています。
外部のXMLファイルから問題を読み込み、それをランダムに5問出題させ、さらに重複させないようにしたいのですが、経験不足のため思うように出来ません。
flashファイル
////////////////////////////////////
var a_xml:XML = new XML();
a_xml.onLoad = function()
{
var top:XMLNode = a_xml.firstChild;
for(i = 0; i<top.childNodes.length;i++){
var item:XMLNode = top.childNodes[i];
trace(item.attributes.name);
}
}
a_xml.ignoreWhite = true;
a_xml.load("xml/test.xml");
////////////////////////////////////
XMLファイル test.xml
////////////////////////////////////
<?xml version="1.0" encoding="UTF-8"?>
<items>
<item name="test1" value="0" />
<item name="test2" value="1" />
<item name="test3" value="2" />
<item name="test4" value="3" />
<item name="test5" value="4" />
<item name="test6" value="5" />
</items>
////////////////////////////////////
XMLファイルの読み込みは何とかできたのですが、ここからどうやってランダムに読み込むかが分かりません。
XML要素のnameをランダムで出題したい場合どうしたらいいのですか?
ここから先は、多分Math.randomを使うのだろうというレベルでしか分からないため、なんとかご教授お願いできませんか?
環境はwin,FlashMX2004です。
No.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/FN021 …
Google検索「配列アクセス演算子」
http://www.google.co.jp/search?hl=ja&q=%E9%85%8D …
返事遅れて申し訳ございません。丁寧な解説ありがとうございます。いろいろと試行錯誤しながら徐々に理解できております。参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
uwscでExcelに自動記入
-
スマホでサイトの画像を長押し→...
-
私のコンピューター上のファイ...
-
ad or script について
-
Flash playerを有効にするには
-
この曲のタイトルを教えてください
-
Flash ブラウザ 段階的に排除 ...
-
何種類の値があるかを調べる方...
-
AS3 mc0~5をまとめて処理する
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【as3.0】外部jpgからリンク
-
AS3.0 タグ内の文字列を置換
-
flashでPHPファイル(実際は該...
-
ActionScript2.0の変数をjs置き...
-
経過日数のカウントアップ
-
XMLで画像を読み込むと巨大化し...
-
varとは
-
FlashLite4.0について
-
AS3の変数宣言で、変数名+00や...
-
文字列から全角スペースを目安...
-
一定時間ごとにカウント
-
XML内のタグの内容を、変数に出...
-
エラー(型が一致しません。)...
-
VB6でユーザー定義型がNothing...
-
c++ cmathとmath.h
-
LRESULTとHRESULT
-
ifdefとenum
-
TextChangeイベントが発生しない
-
#define 文
-
重複しない乱数の生成
おすすめ情報