月別アーカイブ: 2009年12月

外部SWFのシンボルを使う

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/)