MovieClipLoaderクラス

| コメント(0) | トラックバック(0)

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クラスについて」

とりあえずサンプルを作ってみた。スクリーンをクリックでスタート。

FLASH PLAYER

Get Adobe Flash player

【サンプル製作過程】
画面サイズは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%になってしまう。このため、コードの最後で「キャッシュ対策」を行っている。

対策の必要がなければ、「キャッシュ対策」の部分ははずしても問題ない。

トラックバック(0)

トラックバックURL: http://www.ayabin.jp/mt5/mt-tb.cgi/164

コメントする

このブログ記事について

このページは、webmasterが2009年4月27日 20:49に書いたブログ記事です。

ひとつ前のブログ記事は「イベントリスナー」です。

次のブログ記事は「BitmapDataクラス」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。