プログレスバーloaderInfoとcontentLoaderInfo

|
最初にswfを表示する際の読み込み待ちについて簡単に紹介しましょう。AS2まではframesLoadedプロパティを使って、特定のフレーム、特定のインスタンスが読み込まれたどうか判断して読み込み待ちを行いました。

[:script:]最後まで読み込まれたらtopへ進む。それまではループする。
if (this.framesLoaded == this.totalFrames) {
    gotoAndPlay("top");
}else{
   gotoAndPlay("loop");
}

framesLoadedプロパティを使った方法はAS3でも使えますが、AS3からは次に示すようにloaderInfoのprogressイベントのリスナーになり、bytesLoadedとbytesTotalのプロパティを使うことでダウンロード量を調べることができます。

[:script:]プログレスバーを表示するフレームアクション
stop();
var bar:Sprite = new Sprite();
bar.graphics.beginFill(0x000000);
bar.graphics.drawRect(0,0,1,5);
bar.graphics.endFill();
bar.y=stage.stageHeight/2;
addChild(bar);
loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
loaderInfo.addEventListener(Event.COMPLETE, completeHandler);

function progressHandler(eventObj:ProgressEvent):void {
	var per:Number = loaderInfo.bytesLoaded/loaderInfo.bytesTotal;
	bar.width = stage.stageWidth*per;
}
function completeHandler(eventObj:Event):void{
		removeChild(bar);
		loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progressHandler);
		loaderInfo.removeEventListener(Event.COMPLETE, completeHandler);
		gotoAndStop("top");
}
swfを試す
1回実行するとブラウザにキャッシュされるので、2回目以降はプログレスバーが表示されない場合があります。

これを見て外部jpegやswfを読み込むLoaderでの処理と同じと思った人も多いはず。そうです。LoaderのcontentLoaderInfoですね。contentLoaderInfoは読み込むコンテンツオブジェクトのloaderInfoの値なんですね。

まったく新しいAS3の世界!
694a.jpg
Adobe Flash CS4
詳細!ActionScript3.0入門ノート[完全改訂版](CD-ROM付)

楽しいActionScript。
新たなる1歩へと踏み出しましょう。
■内容は?→ 目次を見る
■評判は?→ 書評を読む
この本を書いたわけ

このブログ記事について

このページは、oshigeが2009年11月 2日 16:52に書いたブログ記事です。

ひとつ前のブログ記事は「Adobe EDGE newsletter 第2回 2009.10」です。

次のブログ記事は「ActionScript3.0辞典は800ページ」です。

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

あわせて読みたいブログパーツ