2009-04-25(Sat) 15:58
[AS3.0]外部画像を読み込むときにローディング表示

画像読み込み時に何も表示されないのもあれなので、プログレスバーを表示させたいと思います。
準備としてはFlashで横長のMCを作ります。
今回は「ProgressBar_mc」という名前にしました。

package
{
	import flash.display.Sprite;
	import flash.display.Loader;
	import flash.events.ProgressEvent;
	import flash.net.URLRequest;
	import flash.events.Event;

	public class Main extends Sprite
	{
		var ProgressBar:ProgressBar_mc = new ProgressBar_mc();
		var imgLoader:Loader = new Loader();
		//ステージセンター
		var stageX:int = stage.stageWidth / 2;
		var stageY:int = stage.stageHeight / 2;

		public function Main() {
            imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadComplete);
            imgLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,loadProgress);
            imgLoader.load(new URLRequest("img/img01.jpg"));
		}
		//ローディング中の処理
		private function loadProgress(e:ProgressEvent):void {
			addChild(ProgressBar);
			//プログレスバーの最大の長さを設定
			ProgressBar.width = (e.bytesLoaded / e.bytesTotal * 200);
			//プログレスバーのセンター合わせ
			ProgressBar.x = stageX - 100;
			ProgressBar.y = stageY - (ProgressBar.height / 2);
        }
		//読み込み終了後の処理
        private function loadComplete(e:Event):void {
			//プログレスバーを削除
			removeChild(ProgressBar);
			//イメージを表示
			addChild(imgLoader);
			//画像をセンターに合わせる
			imgLoader.x = stageX - (imgLoader.width/ 2);
			imgLoader.y = stageY - (imgLoader.height / 2);
        }
	}
}

contentLoaderInfoのPROGRESSイベントはダウンロード処理を実行中にデータを受信したときに送出されます。
あとはローディング中の処理を書くだけですね。


Comment Form
Name
E-mail
URL
Comment

TrackBack URL