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 );
}
}
}
}

□はtrace代わりです。

毎フレーム、ロード済みバイト数/総バイト数を計算して100%超えれば終了です。

下のは2Mバイト超の画像を読み込んだ場合の実行結果です。完了までに数フレームかかってますね。

読み込み終了時にイベントリスナーを削除してますので、それ以降はREADING等は表示されません。

外部ファイル読み込み

実行結果を見てみる

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

→6.画像を動かしてみる1

5.外部画像の読み込み3←