NowLoadingを行うサンプルです。(ロードが速すぎてわからないかも)
package
{
import flash.display.Sprite;
import flash.display.Stage;
import flash.events.Event;
import flash.text.TextField;
[SWF(width="400", height="300")]
[Frame(factoryClass="Preloader")] //先にPreloaderクラスを実行する
public class Main extends Sprite
{
public function Main( ):void
{
if ( stage ) {
init();
} else {
addEventListener(Event.ADDED_TO_STAGE, init);
}
}
private function init(e:Event = null):void
{
var t:TextField = new TextField();
t.width = 400;
t.text = "ロード終了!! メインの処理に入りました。";
this.addChild(t);
}
}
}
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.DisplayObject;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.text.TextField;
import flash.utils.getDefinitionByName;
public class Preloader extends MovieClip
{
//Now loading...メッセージ
private var loading_msg:TextField = new TextField();
public function Preloader()
{
//プログレス更新イベント
loaderInfo.addEventListener( ProgressEvent.PROGRESS, onProgress );
//エラーイベント
loaderInfo.addEventListener( IOErrorEvent.IO_ERROR, ioError );
//ロードが終了したか毎フレームチェックする
addEventListener( Event.ENTER_FRAME, onEnterFrame );
//メッセージ登録
this.addChild( loading_msg );
}
private function onProgress( e:ProgressEvent ):void
{
//ロードしたデータサイズを比較してパーセント表示にします
var per:Number = ( e.bytesLoaded / e.bytesTotal ) * 100;
loading_msg.text = "Now loading..." + per.toString() +"%";
}
private function ioError(e:IOErrorEvent):void
{
trace(e.text);
}
//ロードが終了したか毎フレームチェックする
private function onEnterFrame(e:Event):void
{
if ( this.currentFrame == this.totalFrames ) {//ロードが終了した
//ロードに使ったイベント削除
loaderInfo.removeEventListener( ProgressEvent.PROGRESS, onProgress );
loaderInfo.removeEventListener( IOErrorEvent.IO_ERROR, ioError );
removeEventListener( Event.ENTER_FRAME, onEnterFrame );
//メッセージ削除
this.removeChild( loading_msg );
//Mainクラスを呼び出す
var mainClass:Class = getDefinitionByName( "Main" ) as Class;
addChild( new mainClass( ) as DisplayObject );
}
}
}
}