5.外部画像の読み込み4
今度こそロード状況を得る
今までだとMovieClip.getBytesLoaded()とかMovieClip.getBytesTotal()とか使ってロード状況を調べてましたが、AS3だと、contentLoaderInfoが使えるんだそうです。
とりあえずこんな感じで動いてます。
//test.as 画像読み込みテスト4
package {
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
public class test extends Sprite {//クラス宣言
private var message:messagebox;//□
private var img:Loader;
public function test(){//コンストラクタ
message = new messagebox();//□
addChild(message.container);//□
var tURL:String = "bigimg.jpg";
var urImage:URLRequest = new URLRequest(tURL);
img = new Loader();
img.load(urImage);
img.scaleX=0.2;//見やすいように縮小
img.scaleY=0.2;//見やすいように縮小
addChild(img);
addEventListener(Event.ENTER_FRAME, loading);
}
private function loading(event:Event):void {
message.show("READING-"+img.contentLoaderInfo.bytesLoaded+
"/"+img.contentLoaderInfo.bytesTotal);//□
var rate:Number=img.contentLoaderInfo.bytesLoaded/
img.contentLoaderInfo.bytesTotal;
if ( (rate >= 1)&&(img.contentLoaderInfo.bytesTotal > 100) ){
message.show("COMPLETE!");//□
removeEventListener( Event.ENTER_FRAME, loading );
}
}
}
}
package {
import flash.display.*;
import flash.events.*;
import flash.net.URLRequest;
public class test extends Sprite {//クラス宣言
private var message:messagebox;//□
private var img:Loader;
public function test(){//コンストラクタ
message = new messagebox();//□
addChild(message.container);//□
var tURL:String = "bigimg.jpg";
var urImage:URLRequest = new URLRequest(tURL);
img = new Loader();
img.load(urImage);
img.scaleX=0.2;//見やすいように縮小
img.scaleY=0.2;//見やすいように縮小
addChild(img);
addEventListener(Event.ENTER_FRAME, loading);
}
private function loading(event:Event):void {
message.show("READING-"+img.contentLoaderInfo.bytesLoaded+
"/"+img.contentLoaderInfo.bytesTotal);//□
var rate:Number=img.contentLoaderInfo.bytesLoaded/
img.contentLoaderInfo.bytesTotal;
if ( (rate >= 1)&&(img.contentLoaderInfo.bytesTotal > 100) ){
message.show("COMPLETE!");//□
removeEventListener( Event.ENTER_FRAME, loading );
}
}
}
}
□はtrace代わりです。
毎フレーム、ロード済みバイト数/総バイト数を計算して100%超えれば終了です。
下のは2Mバイト超の画像を読み込んだ場合の実行結果です。完了までに数フレームかかってますね。
読み込み終了時にイベントリスナーを削除してますので、それ以降はREADING等は表示されません。

※2007/7/15追記:16.外部画像をまとめて読み込むクラスというのもあります