ETERNITY DESIGN BLOG

[Progression 4]SceneLoader

今まで使う機会がなかったのでスルーしていたSceneLoaderクラス

基本的には他のProgressionのSWFを読み込んでそのままシーンの遷移が使えるというものですが、なんかわかりやすい解説が見つからなかったし、いくつか注意点もあるのでまとめてみる。

ProgressionによるFlashコンテンツ開発ガイドブックにもサンプルとなるコードはありますが、少し違う形で説明します。

CONTINUE READING

ApplicationDomain

ApplicationDomain
前の続き
珍しく調べちゃいました。
といっても、ActionScript 3.0 のプログラミング を調べただけですが、簡単にまとめると下記の感じかな。

親と子のクラスを共存させたい場合
context.applicationDomain = new ApplicationDomain();

これは前のエントリと同じ指定。
これだと、親と子で同じクラス名で動作が違うとかでも共存できます。

親と子でクラスを共有したい場合
context.applicationDomain = ApplicationDomain.currentDomain;

この指定の場合は、親にないクラスが子にあった場合は追加され、その追加されたクラスは親からでも使える。(詳細

親と子でクラス共有だけど、子のクラスは独立
context.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);

親と子でクラス名が重なる場合、親のものが使用される。
子のクラスを親は使えない。
これが何も指定しない場合と同じ状態な気がします。

こんなところでしょうか。
なんの打ち合わせもなく複数人でSWF制作したときなんかは、1の指定をしておいたほうがトラブルは回避できそうですね。

親SWFと子SWFと同名クラス

問題の発覚から解決まですべてをエントリするので、無駄に長いです。
親SWFから子SWFを読み込むFlash(だから、親子なんだけども)
当然、親と子のSWFを別々に制作するわけですが、
それぞれのSWF自体の動作は確認して完成!と思っていたら
どうも親から読み込んで表示したときの子SWFの動作がおかしい。
原因はライブラリに登録してあるMCのクラス名がかぶっていて、親と子でほぼ同じ動作なんだけど、微妙に違うっていう感じだったので、制作のときは同名のクラスをそれぞれ別のasファイルを参照するようにしていたんですが、親からLoader使って子SWFを読み込んだときだけ親クラスと同じ動作をして困った。
まぁ、こうなるんだろうから、これがFlashの仕様なんだろうけど、これがどういう仕組みなのかさっぱりわからない。
簡単に解決するなら、親か子のどちらかのクラス名を変えてやるだけです。
また、頭のいい人はどちらでも動作するようなコードを書けるんだと思います。
(今回のクラスの場合は、ROLL_OVER時に親SWFのドキュメントクラスにあるfunctionを呼び出していただけなんですが、当然、親と子では親にあるfunctionへのアクセス方法が変わる。なので、なんか頭いいコードで回避できる方法もあるのかもしれないけど、自分にはわからん!)
続きに解決編。

CONTINUE READING

ABOUT ME

名古屋を中心に、フリーランスでホームページ制作してます。 デザイン・サイト制作・WordPress案件・Flash制作、JavaScript(jQuery)と幅広く対応可能です。 案件のご依頼・ご相談はCONTACTよりご連絡ください。

CATEGORIES

ARCHIVES

TAGS