ドキュメントクラス超解説

某beinteractiveさんによる超解説

ドキュメントクラスが実行されるのは、1フレーム目がロードされきった時なので、
これよりも前に色々書き出されてるといつまでたってもプリローダとかが実行されない。

sample1.png


「いろいろ」の部分を 2フレーム目に持っていき、ドキュメントクラスをすぐ実行できるようにしたい。
こんな感じに2フレーム目にいろいろMCなど配置する。

sample2.png


ドキュメントクラスはどうするか?

package
{
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.display.Stage;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.utils.getDefinitionByName;

	public class DocumentRoot extends MovieClip
	{
		public function DocumentRoot() 
		{
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.LEFT;

			addEventListener(Event.ENTER_FRAME, _initialHandler);
		}

		private function _initialHandler(e:Event):void 
		{
			//3フレーム目まで到達すればロードが完了
			if (currentFrame == 3) {
				removeEventListener(Event.ENTER_FRAME, _initialHandler);
				stop();

				initialize();
			} else {
				var percent:Number = (loaderInfo.bytesLoaded / loaderInfo.bytesTotal) * 100;
				trace("Loading... " + percent + "%");
			}
		}

		protected function initialize():void
		{
			//var s:Sample1 = new Sample1();
			var sample1:Class = getDefinitionByName('Sample1') as Class;
			var s:Sprite = new sample1();
		}
	}
}

基本的に、「あるクラスが使うクラス」は、そのクラスが実行される前に全てロードされてる必要がある。
ということは、その「あるクラス」よりも、確実に前にロードされるように SWF に配置する必要がある。

DocumentRoot? の中で var s: Sample1 = new Sample1() としてしまうと、
DocumentRoot? クラスが「使うクラス」である「Sample1」クラスは、DocumentRoot? クラスよりも前に読み込まなきゃいけない。
つまり、Sample1 が読み込み終わるまで DocumentRoot? が実行されないので、意味が無い。
こんな図のような感じになってしまう。

sample3.png


で、ここで出てくるのが getDefinitionByName?
クラスは取得するけど、「このクラスはこのクラスが必要です」とまでは主張しない。
するとこんな図のような感じになる。

sample4.png


となって、見事 2フレーム目に埋め込まれる。


sample5.png


そうすると、1フレーム目では Sample1 クラスはロードされていないんだけど、
3フレーム目になればきちんとロードされていて、getDefinitionByName? で取得できる、という状況が出来上がる。
つまり、getDefinitionByName? を使うのは、確実に1フレーム目ではなく2フレーム目に埋め込むため。

サンプル

参考


Comment



Counter: 13700, today: 3, yesterday: 0

添付ファイル: filesample4.png 1222件 [詳細] filesample5.png 1263件 [詳細] filesample3.png 1190件 [詳細] filesample2.png 1199件 [詳細] filesample1.png 1315件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-09-24 (火) 14:55:58 (1280d)