プリローダでロード画面を表示

(サンプル一覧を表示する)

FlashDevelop を使って、プリローダを使ったロード画面を表示するテストをしてみました。
Flash の読み込みが完了すると、音楽の再生ボタンが出てきます。

曲データは、フリー素材曲(MIDI/MP3)のダウンロードサイト / ハイパースペシャル さんからお借りしました。

プロジェクトファイルの中に曲データは入っていないので、
HDD の中に入っている MP3 ファイルを持ってきて代用してください。
Flash の実行画面
プリローダでロード画面を表示

Flashプレーヤーが入っていないか、JavaScriptが無効になっているようです。

Get Adobe Flash player

プリローダでロード画面を表示

ソースコード

package 
{
	import flash.display.Bitmap;
	import flash.display.CapsStyle;
	import flash.display.DisplayObject;
	import flash.display.LineScaleMode;
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.utils.getDefinitionByName;
	
	/**
	 * プリローダでロード画面を表示するサンプル
	 * @author Hikipuro
	 */
	public class Preloader extends MovieClip 
	{
		
		/**
		 * ステータス表示用テキストフィールド
		 */
		private var textField:TextField;
		
		/**
		 * % 表示用テキストフィールド
		 */
		private var textField2:TextField;
		
		/**
		 * コンストラクタ
		 */
		public function Preloader() 
		{
			addEventListener(Event.ENTER_FRAME, checkFrame);
			// show loader
			
			// ステータス表示用テキストフィールドの準備
			textField = new TextField();
			textField.autoSize = TextFieldAutoSize.LEFT;
			textField.y = 70;
			addChild(textField);
			
			// % 表示用テキストフィールドの準備
			textField2 = new TextField();
			textField2.autoSize = TextFieldAutoSize.CENTER;
			textField2.x = 160;
			textField2.y = 210;
			addChild(textField2);
		}
		
		/**
		 * ロード完了チェック処理 (毎フレーム呼ばれる)
		 * @param	e
		 */
		private function checkFrame(e:Event):void 
		{
			// update loader
			
			// ステータス表示用テキストフィールドの更新
			var text:String = "";
			text += "loaderInfo.bytesLoaded = " + loaderInfo.bytesLoaded + "\n";
			text += "loaderInfo.bytesTotal = " + loaderInfo.bytesTotal + "\n";
			text += "currentFrame = " + currentFrame + "\n";
			text += "totalFrames = " + totalFrames + "\n";
			textField.text = text;
			
			// プログレスバーを描く
			var ratio:Number;
			ratio = loaderInfo.bytesLoaded / loaderInfo.bytesTotal;
			
			graphics.lineStyle(10, 
							   0x8888ff, 
							   1.0, 
							   false, 
							   LineScaleMode.NORMAL, 
							   CapsStyle.NONE);
			graphics.moveTo(0, 200);
			graphics.lineTo(ratio * 320, 200);
			
			// % 表示用テキストフィールドの更新
			textField2.text = Math.floor(ratio * 100).toString() + " %";
			
			// ロード完了チェック
			if (currentFrame == totalFrames) 
			{
				removeEventListener(Event.ENTER_FRAME, checkFrame);
				startup();
			}
		}
		
		/**
		 * ロード完了処理
		 */
		private function startup():void 
		{
			// hide loader
			
			// プリローダで使ったテキストフィールドと図形の消去
			graphics.clear();
			removeChild(textField);
			removeChild(textField2);
			
			// Main オブジェクトのロード処理
			stop();
			var mainClass:Class = getDefinitionByName("Main") as Class;
			addChild(new mainClass() as DisplayObject);
		}
		
	}
	
}		

ソースは、プリローダの部分だけを表示しています。
メイン部分は、サウンドの埋め込みサンプルとほぼ同じものです。

プリローダのクラスは、 FlashDevelop のプロジェクト新規作成時に、
「 AS3 Project with Preloader 」を選んで開始すると自動的に作成されます。


ここで AS3 Project with Preloader を選択します。

参照