ActionScriptプロジェクトにpreloaderを追加


考え方は[Frame(factoryClass="ラベル")]を使うことです.
 
FrameメタデータラベルはFlashBuilder 4にあります.6の中にalt+/このヒントはありませんが、手で打つと運行は問題ありません
 
2つのクラスをテストしますPreloaderクラスとメインプログラムクラスBasic_Lesson_1
 
[Frame]メタデータタグネット上では、マスタードキュメントクラスのリダイレクト、つまりプロジェクトを実行するときに先に実行される[Frame(facotryClass="フルリミットクラス"と紹介されています
名")]
factoryClassが指すこのクラスに移動し、このクラスでPreloaderの表示と進捗操作を行います.
 
 
package
{
	import ascb.drawing.Pen;
	
	import com.bless.container.Box;
	
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.ProgressEvent;

	[Frame(factoryClass="com.bless.container.Preloader")]
	public class basic_lesson_1 extends Sprite
	{
		public function basic_lesson_1()
		{
			
			addChild(drawCircle());
			trace("numChildren"+numChildren);
			trace("numChildren"+numChildren);
			trace("this:"+this);
		}
		
		/**
		 *   
		 * @return
		 */		
		public function drawCircle(showBorder:Boolean=true):Shape
		{
			var circle:Shape = new Shape();
			if(showBorder){
				circle.graphics.lineStyle(1,0x7FAAFF,1);				
			}
			circle.graphics.beginFill(0xAAFF7F,0.5);
			circle.graphics.drawCircle(50,50,50);
			circle.graphics.endFill();
			return circle;
		}
		
	}
}

 
 
次にpreloaderクラスというクラスはMovieClipがこのクラスのnextFrameメソッドまたはgotoAndPlay(2)を使用して次のフレームに切り替えることを継承し、元のメインプログラムの論理を実行することができます.
 
次のコードはgetDefinitionByNameでクラスのインポートを行うように書かなければなりません.var app:YourApplicationのようにすると、元のメインプログラムが最初のフレームでプリロードされたクラスを実行しても意味がありません.
 
var basic:Class = getDefinitionByName("basic_lesson_1") as Class;

 
package com.bless.container
{
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.utils.getDefinitionByName;
	
	public class Preloader extends MovieClip
	{
		public function Preloader()
		{
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;

			super();
			trace("OK");
			loaderInfo.addEventListener(Event.COMPLETE,completeHandler);
		}
		
		public function completeHandler(event:Event):void
		{
			gotoAndPlay(2);
//			nextFrame();
			initApp();
		}
		
		public function initApp():void
		{
			var basic:Class = getDefinitionByName("basic_lesson_1") as Class;
			var myApp:DisplayObject = new basic() as DisplayObject;
			addChild(myApp);
		}
	}
}