トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     取得したボタンの番号と同じ番号のデータをXMLファイルから読み込む
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yukidaruma
Åê¹ÆNo.48093
投稿日時: 2011-9-28 23:52
新米
居住地:
投稿: 14
使用環境:
WinVista,Flash cs3
取得したボタンの番号と同じ番号のデータをXMLファイルから読み込む
何回もですみません。お願いします。

ボタンが10こあります。(btn0?btn9)
XMLファイルにデータが10こあります。(data0?data9)
ボタンをクリックしたとき、そのボタン番号と同じデータ番号の内容をFLASHのダイナミックテキストに読み込みたいです。

現在できていることは…
・クリックしたボタンの番号を取得して、変数に入れること。
・XMLファイルから指定のデータを取り出してダイナミックテキストに表示すること。
です。
できないことは…
変数とデータ番号を結びつけることです。


function set_swf(e:MouseEvent):void {
	var btnNum:int=e.target.name.substr("btn".length);
	this.letter_box.letter.text=letters[btnNum];
	var f_url:URLRequest = new URLRequest(btnNum+".swf");
	loaderObj.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadedSWF);
	loaderObj.load(f_url);
		this.text_box.text=xml.data+btnNum;
}

一番下の行のことです。
これではできないのは分かりますが、どのように変えたらよいのか…
XMLのすべてのデータをas3.0の方で読み込んだ後に変数に格納すればできると思いますが、実際作るボタンの数はとても多いので、すべてのデータを読み込むのではなく、クリックしたボタンの番号に対応するデータだけ読み込みたいです。
もしかしたら、XMLの書き方が配列のようにできれば…などと思うのですが、よく分かりません。
どのようにしたらよいでしょうか。
とんび
Åê¹ÆNo.48094
投稿日時: 2011-9-29 1:06
Bak@Fla大巨匠
居住地: 佐賀県 杵島郡
投稿: 275
使用環境:
MX
CS3
:Flash CS6:CS6
.7.5
Re: 取得したボタンの番号と同じ番号のデータをXMLファイルから読み込む
引用:
できないことは…
変数とデータ番号を結びつけることです。

 思うんですけど、ここだけ質問すれば良いんじゃないでしょうか?
 できていることは特に報告の必要ないかと思います。読むのめんどくさいですし。

 あと「とても多い」とか曖昧な情報でなく、もうちょっと具体的に「1万程度作ります」とか書かないとアドバイスもしづらいです。

 そんなわけで勘で答えますけど、データを全部読み込んじゃったって大してメモリを消費するわけでも、読み込みに時間がかかるわけでもないと思うので、最初にデータを全部読み込んじゃったら良いんじゃないでしょうか。


----------------
鳶嶋工房

宇都宮正宗
Åê¹ÆNo.48095
投稿日時: 2011-9-29 2:24
新米
居住地:
投稿: 25
使用環境:
:Flash:5
6.0
2004
:Flash:8
:Flash:CS3
:Flash:CS4
:Flash:CS5
:Flash:CS6
:FlashCC
:FlashBuilder
:FlashDevelop
pro
:Win:Vista
:Win:7
:MacOS:X
Re: 取得したボタンの番号と同じ番号のデータをXMLファイルから読み込む
提示されてるコードでは正しく動かないとは思うのですが、とっかかりだけでも欲しいですよね。


<data>
  <hoge id="0" name="ほげほげ0" />
  <hoge id="1" name="ほげほげ1" />
  <hoge id="2" name="ほげほげ2" />
  <hoge id="1192" name="ほげ??">
    <childHoge>ふが</childHoge>
  </hoge>
  <hoge id="7" name="ほげほげセブン" />
</data>


こういう感じでXMLがあったとして、


var hogeXml:XML = <data>
  <hoge id="0" name="ほげほげ0" />
  <hoge id="1" name="ほげほげ1" />
  <hoge id="2" name="ほげほげ2" />
  <hoge id="1192" name="ほげ??">
    <childHoge>ふが</childHoge>
  </hoge>
  <hoge id="7" name="ほげほげセブン" />
</data>;

(function():void{
 	var index:int = 2;
	trace("チャイルドノード名hogeの"+ index + "番目のリストを表示");
	trace(hogeXml.hoge[index].toXMLString());
	trace("チャイルドノード名hogeの"+ index + "番目のname属性を表示");
	trace(hogeXml.hoge[index].@name);
	trace("========================");
})();
(function():void{
	var extractionId:int = 2;
	var traceData:String = hogeXml.hoge.(@id == extractionId).toXMLString();
	trace("idで抽出:", traceData);
	trace("========================");
})();

(function():void{
	var extractionName:String = "ほげほげセブン";
	var traceData:String = hogeXml.hoge.(@name == extractionName).toXMLString();
	trace("nameで抽出:", traceData);
	trace("========================");
})();


こんな感じでですね、実験してみるとたぶんなんですがやりたいことのヒントが見えてくるかもしれません。
インスタンス名の添え字から紐付くデーターを抽出するという着眼点はいいのですが、XMLは配列ほど並び順が担保されていない(はず)なので、XMLListから何番目かを取り出すように作るよりかは、この属性による抽出を使った方がいいかと思います。
拙い実験用コードで恥ずかしいですが、いろいろ試してみてXMLの走査に役立てれば幸いです!
yukidaruma
Åê¹ÆNo.48102
投稿日時: 2011-9-30 5:44
新米
居住地:
投稿: 14
使用環境:
WinVista,Flash cs3
Re: 取得したボタンの番号と同じ番号のデータをXMLファイルから読み込む
とんびさん、宇都宮正宗さん、ありがとうございます。
XMLファイルの中身を宇都宮さんのように書き換えて、

var traceData:String = xml.setumei.(@id == btnNum).@name;
this.text_box.text=traceData;

のようにidから取り出す方式にしたらできました。(何番目から取り出す方法もできましたが、idの方にしました。)
アドバイスありがとうございました。
助かりました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops