重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

flash内に設置した複数のボタンに外部xmlから取得したurlを設定したいです。
検索したり過去の質問も見てましたが、いまいちわかりませんでしたのでご教授頂けたらと思います。

現在は↓のようになっています。
これですと1つしか読み込めないので、複数設定してそれぞれのリンクを設定したいと思っています。
わかる方いらっしゃいましたら何卒よろしくお願い致します。

xmlのソース(url.xml)
<?xml version="1.0" encoding="UTF-8"?>
<top>
<menu>
<title>url</title>
<url>http://www.google.co.jp/</url>
</menu>
</top>

FLASH内のスクリプト(フレーム)
function startIndexMenu(success)
{
if (success == true)
{
rootNode = index_xml.firstChild;
firstMenuNode = rootNode.firstChild;
childMenuNode = firstMenuNode.firstChild;
updateMenu(childMenuNode);
} // end if
} // End of the function
function updateMenu(newMenuNode)
{
slideText = newMenuNode.firstChild.nodeValue;
slideText_op = newMenuNode.nextSibling;
urlNode = slideText_op.firstChild.nodeValue;
nextMenuNode2 = firstMenuNode.nextSibling;
slideText2 = nextMenuNode2.firstChild.nodeValue;
nextMenuNode3 = nextMenuNode2.nextSibling;
slideText3 = nextMenuNode3.firstChild.nodeValue;
} // End of the function
index_xml = new XML();
index_xml.onLoad = startIndexMenu;
index_xml.load("url.xml");
index_xml.ignoreWhite = true;

ボタンに設定してるスクリプト
on (release)
{
getURL(_root.urlNode, "");
}

A 回答 (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もそのリンク数自体も変えるというような
さらなる発展につなげられるような形にはしているつもりです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/12/13 06:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!