22.ApplicationDomainクラスを使う1
外部swf内のクラスを使いたい!
いろんなスクリプトを書いてると、同じようなことを書くことが出てきますよね。
ゲームで言えば、スコアを表示する部分とか。スコアを表示するクラスを作っておけばそれ(例えばscore.asとしておく)を都度、コンパイル時に読み込めばいいことになります。
ところが、もし、score.asにバグがあって修正した、とかもっといいアルゴリズムを思いついて書き換えたとか。
そんな時、score.asを使っているスクリプトを全てコンパイルし直す必要が出てきます。
それはちょっと面倒ですよね、、、(-_-;)
可能なら、score.asをコンパイルしてscore.swfとした上で、score.swf内のクラスをゲーム本体のスクリプトで使えたらすごく便利なはず!
score.asを修正しても、修正したscore.swfをアップすればいいだけですから。
また、例えば場合によっては、スコア表示が不要な場合、例えばブログパーツでデモ表示するためスコア表示はしないとかだったら、その時はscore.swfを読み込まなければいいわけです。
score.asとしてコンパイルしておくと使わないのに内部に組み込まれてるわけで、swfの容量が不必要に大きくなってることになります。
そういうことを考えると、やっぱり外部swfを読み込んで、その中のクラスを使えるようになりたいわけです!
ApplicationDomainクラスではまる!
そんなわけで、外部swf内のクラスを使う方法というのを探してたら、ApplicationDomainクラスというのに出くわしました。
Flex2リファレンスガイドのApplicationDomainクラスの部分(参考サイト1)にある例として書かれているスクリプトを読むと、それらしいことをやってます!
早速、そのスクリプトを参考に最低限必要な構成で動作確認しようとしたのですが、、、
いろいろやっても、意図通り動いてくれない。(T_T)
at flash.system::ApplicationDomain/getDefinition()
at MethodInfo-1()
なんてエラーが実行時に出てしまう。
外部swfは読み込み完了しているはずだが、クラスが定義できていない?
ネット上を漁るもみんな同じように定義しているはずだが、、?
リファレンスに紹介されているスクリプトをコピペしたものさえ動いてくれない、、、
こら、あかん!と思い、またFLASH-JP.COM(参考サイト2)のフォーラムで質問させて頂きました。
ありがたくもすぐに回答を頂き、無事解決。詳細はFLASH-JP.COMをご覧下さい。
そうかぁ〜、通りで、リファレンスガイドにあるのをコピペしても動かないはずだわ(^^;