外部SWFにリンケージされているクラスを、親swfで生成(new)

2008年2月14日 15:23
仕事でClassに関してかなりはまったのでメモ。

状況としては外部SWFにリンケージされているクラスを、親swfで生成(new)するという感じ。

↓図解

getdefinitionbyname.gif
こんなことは出来ないと、端から決めてかかってたんだけどできた。
(こういう状況ってそんなにあるのかな?)

まずsub.swfには、ライブラリにMCが入っていてclasses.MyClassというリンケージIDが着いている。

ここですごい疑問が。

ライブラリに入ってるだけの状態で外部as(classes/MyClass.as)がコンパイルされんのか?ということ。
sub.swfSub.as)の冒頭でまずインポート。
そしてコンストラクタで って書いておけばコンパイルされるらしい。(実際される)

あと、こういうケースではgetDefinitionByName()というものを使ってクラスを読み込む。使い方は↓こんな感じ。 文字列からClassを参照できるというもの。

これで出来るんじゃねーかと思ったら、ここですげー罠にはまって数時間格闘、、俺の時間を返せ!


これで読み込もうとしたら「MyClassは定義されていない」って怒られた。
もっと「こうしたら良いんじゃねー」的なアドバイスが欲しい。


で実際どうするかというと、main.swfMain)の、sub.swfSub)を読み込むLoaderLoaderContextというのを設定する。

LoaderContextの設定をする
Loaderの第二引数にLoaderContextを設定する
この辺まだあんまり理解できてない、、
とりあえず読み込んだswfのClassを使えるようになる。

ソース
prev  |  next


0 trackbacks

blogs refer to this article: 外部SWFにリンケージされているクラスを、親swfで生成(new)

trackback URL: http://www.at-sonic.com/mt/mt-tb.cgi/69

leave comment