• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:xmlから取得したurlをflash内で設定)

Flash内で複数のボタンに外部XMLから取得したURLを設定する方法

このQ&Aのポイント
  • XMLから取得したURLをFlash内で設定し、複数のボタンにそれぞれのリンクを設定したい方法について教えてください。
  • 現在の仕組みでは1つのURLしか読み込めないため、新しいURLが複数ある場合に対応できません。
  • 解決策として、XML内に複数のURLを定義し、Flash内でそれらを読み込んでボタンに設定する方法があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

「どうするのか」というのは作者の意図で決めることが大半です。 ですから 「こうすべき」とか「これが良い」というような回答はできません。 というわけで 以下に書くことはあくまでも「たとえばの一例」です。 例えば「url.xml」の内容は次のようにします。 ------------------------------ <?xml version="1.0" encoding="UTF-8"?> <top> <menu> <title>Google</title> <url>http://www.google.co.jp/</url> </menu> <menu> <title>Yahoo!</title> <url>http://www.yahoo.co.jp/</url> </menu> <menu> <title>Bing</title> <url>http://www.bing.com/</url> </menu> </top> ------------------------------ この場合, 例えばフレームに書くスクリプトは次のようにします。 ※「制御」→「ムービープレビュー」での   動作検証用にいちいち trace を入れています。   (trace行は本来不要です。) //---------------------------- function startIndexMenu(success) { if (success) { //親のノードを取得 rootNode = index_xml.firstChild; trace("rootNode→ " + rootNode); // //親の持つ子ノードの数を取得 child_len = rootNode.childNodes.length; trace("child_len→ " + child_len); // //子の数だけ i の数を 0 から 1 ずつ加算しながらループ for (var i = 0; i < child_len; i++) { //子ノードを(一時的に)取得 var child = rootNode.childNodes[i]; // //_root の 変数「child○_title」に各 「title」を代入 _root["child" + i + "_title"] = child.childNodes[0].firstChild.nodeValue; trace("_root.child" + i + "_title→ " + _root["child" + i + "_title"]); //_root 変数「child○_url」に各 「title」を代入 _root["child" + i + "_url"] = child.childNodes[1].firstChild.nodeValue; trace("_root.child" + i + "_url→ " + _root["child" + i + "_url"]); } } } index_xml = new XML(); index_xml.onLoad = startIndexMenu; index_xml.load("url.xml"); index_xml.ignoreWhite = true; //---------------------------- そして 例えば1つ目のボタンには次のように書きます。 //---------------------- on (release) { getURL(_root.child0_url, "_self"); } //---------------------- 2つ目のボタンであれば次のように書きます。 //---------------------- on (release) { getURL(_root.child1_url, "_self"); } //---------------------- 3つ目のボタンであれば次のように書きます。 //---------------------- on (release) { getURL(_root.child2_url, "_self"); } //---------------------- ※以上の全スクリプト   ActionScript 1.0   Flash 5(CS5 ではなくてただの5)以上で使用可   Flash Player 5 以上で動作可 今現在のような こういう各ボタンの決め打ちのようなやり方では XMLのデータ量(XMLのリンク個数)の変更によって ボタンの数を変えたりすることはできません。 しかし フレームのスクリプトの方では //親の持つ子ノードの数を取得 child_len = rootNode.childNodes.length; によってデータ数を得て その個数によって forループ の数を変えていますから XMLに応じた動的コンテンツの作成にも一応は対応させているつもりです。 つまり さらに工夫することで, XMLからURLもそのリンク数自体も変えるというような さらなる発展につなげられるような形にはしているつもりです。

marcy-inc
質問者

お礼

ありがとうございます!おかげさまで解決いたしました! 勉強になりました。感謝いたします。

すると、全ての回答が全文表示されます。

関連するQ&A