XMLドキュメントをロードする
XMLデータをMacromedia Flashムービーにロードするにあたっては、三つの基本的なステップがあります。以下のコード例で概略を示します。
まず、XMLオブジェクトのインスタンスを作成します。
myXML = new XML();そして XML.load メソッドを呼び出して、そこにURLもしくはXMLファイルへのパスを渡します。
myXML.load("myData.xml");最後に、 XML.onLoad ハンドラを定義、生成します。このハンドラは XML.load メソッドが完了したときに自動的に呼び出され、ドキュメントのロードが成功したかどうかを示す true もしくは false falseの値がそこに渡されます。
myXML.onLoad = myLoadHandler; myLoadHandler = function(loaded) { if (loaded == true) { //エラーが出ることなくXMLドキュメントがロードされた。処理を継続。 } else { //XMLドキュメントがロードされなかった。処理を停止。 } }
サンプルムービーでは、slides.xmlというXMLファイルをロードするために slides_xml というXMLインスタンスを生成しました。このインスタンスの onLoad ハンドラは startSlideShow という名前です。
slides_xml = new XML();
slides_xml.load("slides.xml");
slides_xml.onLoad = startSlideShow;
function startSlideShow(success) {
if (success == true) {
rootNode = slides_xml.firstChild;
totalSlides = rootNode.childNodes.length;
firstSlideNode = rootNode.firstChild;
currentSlideNode = firstSlideNode;
currentIndex = 1;
updateSlide(firstSlideNode);
}
} startSlideShow ハンドラをもっと詳しく見てみましょう。ここではXMLオブジェクトのいくつかの基本的なメソッドとプロパティの使い方が示されています。
まず、 XML.firstChild プロパティを使用してXMLドキュメントのルートノードへの参照を取得し、 rootNode 変数にその結果を入れます。
rootNode = slides_xml.firstChild;
メモ: XMLオブジェクトのインスタンス(この例ではslides_xml)に適用されると、XML.firstChildは常にそのドキュメントのルートノードへの参照を返します。これはXMLドキュメントツリーのルートノード以下から情報を引き出すためのスタートポイントとして有用です。
スライドショーの中のスライドの総数はルートノードに含まれる子ノードの数に等しくなります。サンプルXMLファイルでは、ルートノード <Slide> は <slideNode> という要素を5つ中に持っています。 XML.childNodes はこの指定されたXMLオブジェクトの子ノードの配列を返し、その配列の長さはスライドの総数を示します。
totalSlides = rootNode.childNodes.length;
totalSlides という変数名は、スライドの総数を表示するための、ステージ上のダイナミックテキストフィールドに与えられた名前であることに注意しましょう。
ルートノードの一番目の子供は一番目のスライドの詳細を保持しています。ここでは以下のように、一番目のスライドのノードへの参照を firstSlideNode という変数に入れます。
firstSlideNode = rootNode.firstChild;
ハンドラの残りの部分は以下の通りです:
currentIndexという変数を初期化します。これは、現在のスライドのインデックスを表示するための、ステージ上のテキストフィールドに与えられた変数名と同じです。この変数はスライドショーを通じて、ユーザがスライドを移って行く度に更新されます(詳しくは「スライド間を移動する」を参照)。currentSlideNode変数をfirstSlideNodeと等しくなるように設定します。currentSlideNodeの値はスライドショー全体を通じて更新され、現在のスライドのノードを指し示す値になります(詳しくは「スライド間を移動する 」を参照)。- カスタム関数
updateSlideを呼んでパラメータとしてfirstSlideNodeを渡します。updateSlide関数については「現在のスライドを更新する」で検討します。
XML.ignoreWhite
デフォルトでは、Macromedia Flash Playerは、XMLコードをより読みやすくするために使用されているタブやキャリッジリターンを、すべて意味のあるものとして認識します。XMLパーサはこれらの空白文字を空のテキストノードとして扱います。このことにより、ドキュメントツリーから情報を引き出す時に予期しない結果が生まれます。
XML.ignoreWhite プロパティを使うことでこのようなデフォルトの振舞いを無効にすることができます。このプロパティを true にすることで、サンプルムービーでやったように、Macromedia Flash Playerが空白しか保持していないテキストノードを無視するように指定することができます。
slides_xml.ignoreWhite = true;
意図的に自分の XML ドキュメント内の要素間にある空白スペースが意味をもつようにしているので限り、 ほとんどの場合において、このプロパティはtrueに設定しておきたいはずです。より詳しくは、オンラインのActionScript 辞書の XML.ignoreWhite の項を参照してください。
翻訳: 株式会社バスキュール