SWFをいくつかにわけて、親がそれらを読み込んで、、、という作り方はよくあると思います。でもムービーの制御をすべて親SWFで行いたい場合、SWFを分ける理由は単にHTMLに貼り付けるSWFを軽くするためでしかないこともあります。
その場合、分けてしまうことでデバッグがしにくかったり、深度管理が大変だったりというデメリットが生じてしまいます。
その解決方はいくつかあるとおもいます。たとえば、
・getDefinitionByName
や
・getDefinition
を使う方法です。
以前にも同じような問題にその時々で解決してきたのですが、ちょっとしっくりした方法が見つかったのでメモします。
※途中割愛、はい、親ムービーで子ムービーを読み込みました。親ムービーにはchildMovieというMovieClip型のインスタンス(子ムービー)があります。
package
{
import view.Sample;//子ムービーのライブラリにあるシンボル
import flash.system.ApplicationDomain;
public class Main extends MovieClip
{
/*割愛*/
function attachSample(childMovie:MovieClip):void{
var domain:ApplicationDomain = childMovie.loaderInfo.applicationDomain;
var Sample:Class = domain.getDefinition(“Sample”) as Class;
var sample = new Sample();
addChild(sample);
}
}
}
ポイントは3つ。
・子ムービーのシンボルは1フレのどっかに張っておくか、1フレーム目に書き出しチェックボックスにチェックを入れておく。
・親ムービーにimport文を入れていつでも使える準備をしておく。
・domain.getDefinition(“view.Sample”) じゃなくてdomain.getDefinition(“Sample”)
こうすることで、デバッグ時に親ムービーに子ムービーにあるクラスが存在するかのように開発を進めることができます。
参考URL(http://www.adobe.com/jp/newsletters/edge/october2009/articles/article2/)