Preloader内でもProgressionインスタンスを忘れない。

2012.02.16 ActionScript3.0 

なんかProgression4のPreloaderでずっと以下みたいなエラー出てて、

TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
at jp.progression.casts::CastSprite$/_addedToStage()

その時のコード。この辺り怪しいなと。(※LoadingBar:CastSprite)

override protected function atCastLoadStart():void
{
	addCommand(
		new AddChild( foreground, LoadingBar.instance),	← ていうか多分ここ
		function ():void{
			stage.addEventListener(Event.RESIZE, resizeHandler);
			resizeHandler(null);
		}
	);
}

なんだろと思ってみてみたらPreloader内のCastSpriteがaddChildされたタイミングでエラってるぽくて、まー別に読み込みのindex.swfも185KBしかないしindex.swf直接読んでもいいかなとか一瞬考えたんだけど気持ち悪かったので調べてみたら、あった。
CastPreloaderのイベント処理

にゃるほど。Preloader内ではProgressionインスタンスが作られてないからその時点で
new AddChildとかでCastSprite追加しても管理できないとかそんななんだろうなということで
以下に修正してみた。

override protected function atCastLoadStart():void
{
	Progression.initialize( new WebConfig() );
	var manager:Progression = new Progression( "preloader", this.stage );

	addCommand(
		new AddChild( this.foreground, LoadingBar.instance),
		function ():void{
			stage.addEventListener(Event.RESIZE, resizeHandler);
			resizeHandler(null);
		}
	);
}

いけた。

まー、PreloaderでもCastSpriteとか使うんならProgressionインスタンスつくって管理しようね!
ってことなんだろうと理解してる。(いいのか?

you

© rettuce.com