MX2004から採用。jpgやswfをロードするときに発生するイベントを内包する便利なクラス。
以下公式。
//MovieClipLoaderインスタンスを生成
var mcl:MovieClipLoader=new MovieClipLoader();
//リスナーオブジェクトを生成
var obj:Object=new Object();
//リスナーオブジェクトに各イベント時の処理を記述
obj.onLoadStart=function(_mc:MovieClip):Void{
//ロード開始時の処理を記述
}
obj.onLoadError=function(_mc:MovieClip,errstr:String,HttpStatus:Number):Void{
//エラー時の処理を記述
}
obj.onLoadProgress=function(_mc:MovieClip,loadedBytes:Number,totalBytes:Number):Void{
//ロード中の処理を記述
}
obj.onLoadComplete=function(_mc:MovieClip):Void{
//ロード完了時の処理を記述
}
obj.onLoadInit=function(_mc:MovieClip):Void{
//ロードしたSWFの第1フレームアクション実行後の処理を記述(画像サイズなどの調整はココで)
}
//イベントリスナーをMovieClipLoaderインスタンスに登録
mcl.addListener(obj);
//swf「ayabin.swf」をMovieClipLoaderインスタンスにロード
mcl.loadClip("ayabin.swf",表示させる(ターゲット)ムービークリップ);
参考資料:Flashテクニカルノート「MovieClipLoaderクラスについて」
とりあえずサンプルを作ってみた。スクリーンをクリックでスタート。
【サンプル製作過程】
画面サイズは300x300。
_rootにムービークリップload_mc(インスタンス名:load_mc)とprogressbar(インスタンス名:progressbar)を配置。
progressbarには300x40のbg(シェイプ)、「%」(静止テキスト)、ムービークリップbar(インスタンス名:bar)、それにダイナミックテキスト(インスタンス名:percent)をそれぞれ配置。
以下ソース。
タイムライン1フレーム目に記述。
stop();
var mcl:MovieClipLoader=new MovieClipLoader();
var obj:Object=new Object();
obj.onLoad=function(){
_root.progressbar.bar._xscale=0;
}
/*ロード開始時の処理*/
obj.onLoadStart=function():Void{
_root.load_mc._alpha=0;
}
/*ロード中の処理*/
obj.onLoadProgress=function(_mc:MovieClip,loadedBytes:Number,totalBytes:Number):Void{
per=Math.ceil(loadedBytes/totalBytes*100)
_root.progressbar.percent.text=per;
_root.progressbar.bar._xscale=per;
}
/*ロード終了後の処理*/
obj.onLoadComplete=function():Void{
//必ず100%で終わるようにする
_root.progressbar.percent.text="100";
_root.progressbar.bar._xscale=100;
//読み込んだ画像をフェードイン
_root.load_mc.onEnterFrame=function():Void{
this._alpha+=10;
if(this._alpha>=100){
delete this.onEnterFrame;
this._alpha=100;
}
}
//プログレスバーを画面下へ
_root.progressbar.onEnterFrame=function():Void{
this._y+=(Stage.height-this._y)/5;
if(this._y>=299){
delete this.onEnterFrame;
}
}
}
//ロードしたjpgの第1フレームアクション実行後の処理
obj.onLoadInit=function(target_mc:MovieClip):Void{
scale=Math.ceil((300/target_mc._height)*100);
target_mc._xscale=target_mc._yscale=scale;
}
mcl.addListener(obj);
//キャッシュ対策のための変数生成
var date:Date = new Date();
var time:Number = date.getTime();
mcl.loadClip("読み込みたい外部ファイルURL?time="+time,load_mc);
注意)読み込まれた外部ファイルはブラウザにキャッシュされる。以後はキャッシュを読むため、すぐに100%になってしまう。このため、コードの最後で「キャッシュ対策」を行っている。
対策の必要がなければ、「キャッシュ対策」の部分ははずしても問題ない。

コメントする