Flashでより複雑なものから始めたい場合、方法を見つけるのは非常に難しい場合があります。ジョーダンが示唆したように、xmlは情報を要求するための最良の方法です。xmlファイルは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<myList>
<excercise>
<question>What is 2 x 2?</question>
<answer>4</answer>
</excercise>
</myList>
(これをコピーしてメモ帳に貼り付け、.xmlとして保存できます)
フラッシュアクションスクリプトでは、このxmlに対応できるようにするためにいくつかの項目が必要になります。「Main.as」という名前の別のactionscriptファイルで次のテンプレートを使用します。
package
{
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.xml.*;
import flash.events.Event;
import flash.display.Loader;
public class Main extends MovieClip
{
var myFile:String;
var xmlLoader:URLLoader;
var myList:XML;
public function Main()
{
myFile = "myList.xml";
loadXml();
}
function loadXml():void
{
xmlLoader = new URLLoader(new URLRequest(myFile));
xmlLoader.addEventListener(Event.COMPLETE,xmlLoaded);
}
function xmlLoaded(event:Event):void
{
myList = new XML(event.target.data);
myList.ignoreWhite = true;
//totalNr = myList.excercise.length(); = the amount of excercises in your file
//var str:string = myList.excercise[0].question;
//trace (str) would give you the text of the question of the first excercise
}
}
}
編集
ステージ上にテキストボックスを作成し、questionTxtという名前を付けたとします。そのテキストボックスに質問を追加するには、次のように言います。
questionTxt.text = myList.excercise[0].question;
その下に、生徒が回答を入力できる入力テキストフィールドを作成します。それをanswerTxtと呼びます。
また、チェックボタンを作成して、回答があったときに押すことができるようにします。それをcheckBtnと呼びます。
また、それらの入力をxmlの回答と比較する関数も必要になります。以下で対処します。
次に、次のようにイベントリスナーをcheckBtnに追加します。
checkBtn.addEventListener(MouseEvent.CLICK, checkAnswer)
そして、答えをチェックする関数(便利な名前はcheckAnswer):
function checkAnswer (event:MouseEvent) : void {
if (answerTxt.text == myList.excercise[0].answer) {
trace ("correct");
} else {
trace ("wrong");
}
}
xml-dataを配列として扱います。最初の演習はmyList.excercise[0].questionとして検出され、2番目の演習はmyList.excercise[1].questionなどとして検出されます。