xmlとデータをflashにとりこんで配列化してみるときに使ってみたんだけどこれが結構便利です。
これなら更新の際も便利だね。
ソースは
import org.casaframework.load.data.xml.XmlLoad;
import org.casaframework.util.XmlUtil;
import org.casaframework.util.ArrayUtil;
var swfinfo:Array;
function onDataLoad(sender:XmlLoad):Void {
//XmlUtilでXMLをパース
swfInfo = XmlUtil.xmlToObject(this.myXmlLoad.getXml())['data'][0]['items'];
//initを実行
init();
}
//XMLをロード
var myXmlLoad:XmlLoad = new XmlLoad("movies.xml");
//ロード完了時の処理
this.myXmlLoad.addEventObserver(this,XmlLoad.EVENT_LOAD_COMPLETE,"onDataLoad");
//ロード開始
this.myXmlLoad.start();
function init():Void {
//trace(swfInfo[0].movie[0].nodeValue);
//ここで配列化
var swf_array:Array = new Array();
for (i=0; i<=swfInfo[0].movie.length-1; i++) {
swf_array[i] = swfInfo[0].movie[i].nodeValue;
}
//ここでランダム化
_swf_ARR = ArrayUtil.randomize(swf_array);
trace(_swf_ARR[0]);
//ランダムにして各MCにloadClip
//全体管理用リスナー
var Listener:Object = new Object();
//ロードするswfの数
Listener.num = 7;
//ロード完了した数
Listener.count = 0;
//onLoadInit
Listener.onLoadInit = function() {
this.count++;
if (this.count>=this.num) {
this.onLoadAll();
}
};
//全てのswfをロードしたときの処理
Listener.onLoadAll = function() {
//gotoAndPlay(2);
trace("完了");
};
//ここから読み込み処理
var Loader0:MovieClipLoader = new MovieClipLoader();
//リスナー登録
Loader0.addListener(Listener);
Loader0.loadClip(_swf_ARR[0],this.load0);
//ここまで
//ここから読み込み処理
var Loader1:MovieClipLoader = new MovieClipLoader();
//リスナー登録
Loader1.addListener(Listener);
Loader1.loadClip(_swf_ARR[1],this.load1);
//ここまで
//ここから読み込み処理
var Loader2:MovieClipLoader = new MovieClipLoader();
//リスナー登録
Loader2.addListener(Listener);
Loader2.loadClip(_swf_ARR[2],this.load2);
//ここまで
//ここから読み込み処理
var Loader3:MovieClipLoader = new MovieClipLoader();
//リスナー登録
Loader3.addListener(Listener);
Loader3.loadClip(_swf_ARR[3],this.load3);
//ここまで
//ここから読み込み処理
var Loader4:MovieClipLoader = new MovieClipLoader();
//リスナー登録
Loader4.addListener(Listener);
Loader4.loadClip(_swf_ARR[4],this.load4);
//ここまで
//ここから読み込み処理
var Loader5:MovieClipLoader = new MovieClipLoader();
//リスナー登録
Loader5.addListener(Listener);
Loader5.loadClip(_swf_ARR[5],this.load5);
//ここまで
//ここから読み込み処理
var Loader6:MovieClipLoader = new MovieClipLoader();
//リスナー登録
Loader6.addListener(Listener);
Loader6.loadClip(_swf_ARR[6],this.load6);
//ここまで
}
っと。
xmlを解析して配列化。そしてまたrandomizeを使用して中身をランダムにするとloaderに読み込むムービーはいつでもランダム。
再生するとき、更新されたときも必ずランダム配列になってるのでなかなかいい。
ところでこの最後のところのloadClipの処理が嫌。
同じこと何度もやってる。
これを一回で出来ないかな?forを使ってとか?
やってみたけどなぜかできない、納期が迫って時間がない。。。
次は成功させるぞ!
この記事にトラックバックする