
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ややこしいぜ。

