feb19.jp

Nobuhiro Takahashi
Designer / Engineer

AS3でNowLoadingな処理

AS3でNowLoadingな処理

AS2では_root.getBytesLoaded()とか使って作ってたアレです。

だいぶ初心者向けな内容ですが、一箇所一瞬詰まった(というかドキュメントで見逃していた)のでメモ。

自分自身の容量と、現在ダウンロード済みの容量を比較して、同じになったら完了の処理へ進むという作り方、またはダウンロード済みの容量は全体の容量の何パーセントかを監視して100パーセントになったら完了の処理へ、などという感じとか色々作り方はありますが、とりあえず今回は後者で。

AS3ではgetBytesLoaded()メソッドではなく、bytesLoadedプロパティを使います。

今回一瞬詰まったところは、this.bytesLoadedじゃなくて、this.loaderInfo.bytesLoadedと、いう風に「loaderInfo」をはさまないといけない、ということ。

NetStreamとかの場合は、NetStream.bytesLoadedなので(AS2/3両方)、これは区別して覚えておかねばミスに繋がりそうです。

というわけで簡単なサンプルコード。

this.addEventListener(Event.ENTER_FRAME, checkBytes);
function checkBytes(e:Event){
	var per = this.loaderInfo.bytesLoaded / this.loaderInfo.bytesTotal * 100;
	if (per >= 100) {
		complete();
	}
}
function complete() {
	this.removeEventListener(Event.ENTER_FRAME, checkBytes);
	//完了後の処理
	this.gotoAndStop("start");
}
stop();

ちなみにLoaderを使った外部ファイルのロードとかの場合は、前のエントリーで書いたように「contentLoaderInfo」のProgressEventにするか、「loaderInfo」じゃなくて「contentLoaderInfo」を挟むようにする。ああAS3ややこしいぜ。

Tweet Share Bookmark

Navigation

prev: hetemlがパワーアップした
next: Papervision3D 2.0 - Great White

Recently Entries