« 近状 | Home | 弐号 »

Jan 222011

SceneLoaderで読み込んだ外部Progressionのcontainerを設定する

Progressionで初期Loadの負荷を下げるために、シーンファイルを個別のswfで作成し、SceneLoaderで制御するという事は多々あります。

その際に外部swf内の子ProgressionコンテンツをAddchildする先を親Progressionのcontainerにすると、各コンテンツの深度制御がちょっと面倒になる時があります。(シーン移動のトランジション時など) その場合、子Progressionのcontainerを親Progressionの任意のDisplayObjectContainerにしてしまうと楽ちんです。

こんな感じ
親Progression
_boxContents = new CastSprite( { id:"box:contents" } );
addCommand(new AddChild(container, _boxContents));
var sLoader:SceneLoader = new SceneLoader("hoge");
sLoader.onScenePreLoad=function():void{
	var loader:LoadScene = new LoadScene(new URLRequest("hoge.swf", sLoader);
	loader.loaderContainer = _boxContents;
	sLoader.addCommand(loader);
}
addScene(sLoader);
これで、子Progression内における、"container"は、自動的に_boxContentsを参照することになります。

ちと自分はカスタムクラス化して、上記のような記述をしていないので、実際きちんと動くか?は分からないですけど・・・。こんな感じなのは間違いない。

で、もし親Progressionのcontainerにアクセスしたい場合はgetManagerByIdを用いて親Progressionのmanager経由でアクセスしてやればよいかと・・・。
これウソ。managerにcontainerを参照するproperty無かった。 あれー?

追記: Progression4から、各シーンのcontainerを変えれるので(って上でやってますけど)、manager.containerではなく、manager.root.containerでアクセスするかんじですね。(これもトップシーンのcontainerってだけですけど)もし、厳密にアクセスしたいのであれば、getSCeneByIdでシーンに直接参照する感じかな?しらんけど。

Leave a comment

Search and Archives