FLVPlaybackのSkin*.swfと呼び出し元swfが違う階層の場合 | Flashとブラウザ

【×別々の階層】 →同じ階層版

別々の階層だとskinが表示されない

フォルダ構成が変わるため、swfを呼び出せない。
.flvは呼び出し元のswfからの相対パスでもOK?なのだが、
外部swfはswfを貼り付けたHTMLからのパス指定となるため。

[/p1-3_flv]
└[/test]
 └[flv_sample.html]←ココ
├[flv_sample.swf]
├[flv_sample.flv]
└[SkinOverPlaySeekFullscreen.swf]

考察


解決策:FlashVarsでskin.swfのファイルパスを値としてSWFに渡す

var FlashVars = {
  "autoPlay" : "true",
  "flv" : "./goya.flv",	//←flv_sample.swfから見た相対パス
  "skin" : "../SkinOverPlaySeekStop.swf"	//←flv_sample.swfを貼り付けたHTMLから見た相対パス
};
swfobject.embedSWF( "../flv_sample.swf", "myFlash2", "320", "240", "9.0.0", "", FlashVars, "");

SWFの方では上記のFlashVarsの値を受け取るAS3の処理が別途必要。
webサーバーにアップしたときは、相対ルートパス("/hoge/swf/***.swf")等で指定するのが無難。


応用:Flv,Skinを切り替える

FlashVarsで値を変更できるようにしておけば、1個のswfで再生flvやskin.swfを切り替える事で管理を簡単にできる。
自前のFlvPlayerを作ることも可能。