15.XMLを読み込む
何かとXMLは便利
私の場合、FLASHで何か作ると、データを別ファイルに入れておいて、実行時にそれを読み込む、なんてことが多いです。
ムービーのパラメータを別ファイルのデータで持っておいて、それをいじってSWFでのタイミングを決めたり、位置を決めたり。そうすると、いちいちSWFを作成(コンパイル)しなくてもいいので、楽チンだったりします。
この別ファイルのデータですが、自分ひとりで作っていると、データも好き勝手に並べてても問題ないのですが、XMLにしておくとやっぱりデータを見た時に、どの値がどのデータかわかりやすくていいんです。
ということで、AS3でもXMLを読めると便利だろうな、ということでどうやるのかテストしてみました。
いいサンプルに感謝
今まで(AS2)、XMLを読み込む時ってやたらと苦労しておりました。
多分私が未熟なのかもしれませんが、やたらchildNodesとかfirstChildとか使って、、、
簡単にmy_xml.syohin.priceなんて具合に取り扱えないのかよ?!と思っておりました。
AS3ではどうやってXML読んだらいいのかと思い、調べるとおおお〜、素晴らしいサンプルが書いてるページがありました(参考サイト参照下さい)。
後はimportで必要なのを書けばOK(頭に入ってないと調べるのが面倒ですけどね)。
地味に感動したのが、XMLの階層(って言うのかな)をさらに増やして、
<drink price="150">
<name>juice</name>
</drink>
<drink price="150">
<name>tea</name>
</drink>
<drink price="350">
<name>beer</name>
<span style="color:maroon;font-weight:bold;"><stock>
<kirin>120</kirin>
<sapporo>50</sapporo>
</stock></span>
</drink>
</data>
なんてしても、myXML.drink[i].stock.kirin で値を得られる!おお〜、感動!
やっぱり、XMLにはそうあって欲しいわけです!
XMLのロード状況
こういうファイルをロードする、となるとお決まりのどのくらい(0〜100%)読み込んだのか?というのを知りたいわけです。
もっとも、画像なんかと違って、XMLだとそれほどサイズは大きくならないので、必要ないのかもしれませんが、、、
一応試したところ、bytesLoadedとbytesTotalでなんとかなるようです。
ただ、読み込む時間よりも、読み込み完了後の処理部分の
の部分での方が、時間がかかってそうです。
うーん、やっぱりプリローダー不要だな。もしくは、必要ならこのことを考慮しないとだめかもしれません。
一行で!
ところで、このサンプルにある、
という部分。これって、
var myURLRequest:URLRequest= new URLRequest(myURL);
myLoader.load(myURLRequest);
を1行で書いてます。
画像読み込みの時は下のように書いてましたが、こんな風に1行で書けるんですねぇ〜、なんかすごい!
※追記:23.XMLではまった!という関連記事もあります