Progression4のCrossDomain処理とか
クロスドメイン環境でProgression4を使う際は数カ所でクロスドメインに対応する必要があります。一般的なケースでは無いけど、webサービスとかにProgressionをインクルードした場合に必要になるかと思うのでメモ。
例えば下記の様なサイト構造
http://tmp1/index.htmlがhttp://tmp2にあるProgressionファイル一式(preloader.swfとかindex.swf)を読み込んで表示する場合、こんな感じでクロスドメイン処理をします。
step1. index.swfでtmp1をSecurity.allowDomain()で許可(*1)
step2. tmp2サーバー上にcrossdomain.xmlを設置、tmp1を許可
どうしてまた二カ所で指定するのかと言うと、
phase1. index.htmlがpreloader.swfを読み込む
phase2. preloader.swfがindex.swfを読み込む
phase3. index.swfがindex.htmlを読み込む
という読み込みシーケンスをProgression4では行うので
phase2. Security.allowDomain()でtmp1の許可が必要
phase3. crossdomain.xmlでtmp1を許可の許可が必要
となります。
このphase3.でindex.swfがindex.htrmlを読み込むのはProgression4から搭載されたWebDataHolderの動作によるものです。WebDataHolderはProgressionのシーン構造をindex.htmlが構築してやるぜ!という野心的なClassですがこれについてはそのうち詳しく説明するかもです。
ちなみにここで紹介したのはFlashPlayer10を対象にしてるので、今後のバージョンアップでCrossDomainのポリシーが変更された場合は、異なる処理が必要になるかもしれません。
とりあえずサンプルファイル(*2)
*1 Security.allowDomain()はIndexクラス(Index.asファイル)のコンストラクタで実行します。
*2 実際の動作を確認するためにはtmp1,tmp2をネットワーク上に配置する必要があります。