Dreamweaverでswfを配置したのにサーバーで確認したら真っ白
DreamweaverCS6にて確認。
現象としては、
(1)FlashCS6で特に代わり映えのしないアニメーションを作成。(this.stop()以外のActionScriptなし)
(2)パブリッシュ設定は初期値。(ターゲットはFlash Player 11.2、ActionScript3)
(3)書き出したswfをDreamweaverで「挿入」→「メディア」→「swf」で挿入。特に設定は変更しない。
上記の通り特に変わったことはせず、ほとんど初期設定のまま作業してできたファイル群をサーバーにアップロードします。
swfを挿入するときに、Dreamweaverが自動的に2つファイルを作成しますが、これらももちろんアップします。(「expressInstall.swf」と「swfobject_modified.js」)
アップが終わったら確認するわけですが、ここで問題発生。
Flashのムービーが表示されるべき場所が真っ白でなにも表示されません。
swfを直接開く(URLを直接指定する)と再生されたため、swf自体に問題があるわけでもなく、ブラウザのプラグインのバージョンが古いせいでもありません。
表示されない原因としてまず疑ったのは前述の「expressInstall.swf」と「swfobject_modified.js」。
ブラウザにインストールされているプラグインのバージョンを調べたりするためにDreamweaverが自動的に入れるものですが、結論から言うとこれらが直接の原因ではありませんでした。
というか、厳密に原因はまだ分かっていないのですが、解決法だけ示します。
「パブリッシュ設定」の「Flash(.swf)」の下の方にある「ローカルでの再生に関するセキュリティ」という項目に注目。
これ、たぶん最初は「ローカルファイルのみにアクセスする」となっていると思いますので、「ネットワークにのみアクセスする」に変更して書き出しをやり直してください。これで解決するかと思います。
実はこの現象、ターゲットを「Flash Player 9」にすれば、上述の 「ローカルでの再生に関するセキュリティ」は変更せずとも改善されます。
ここからは想像が入りますが、この 「ローカルでの再生に関するセキュリティ」は、 「ローカルファイルのみにアクセスする」になっている場合、swfが外部のファイルを読むとき、ローカルのファイルのみ読み込めるという意味のようです。
「ネットワークのみにアクセスする」は読んで字のごとく、サーバー側のデータのみにアクセスするという設定です。
Flash Playerはバージョンによってセキュリティの対応が少しずつ変わってきているので、もしかしたらFlash Player 10以降のバージョンで、「ローカルのファイルのみにアクセスする」を選んだ場合、 「expressInstall.swf」と「swfobject_modified.js」との関係でうまく動作しないのではないか、というように考えています。
何はともあれ、初期設定のまま進めていくとNGという点が問題だと思うのですが、探し方が悪かったのか同じ状況をネットでも見かけなかったので、もしかして何か他に初歩的な見過ごしが私の方にあるのかもしれません。
とにかく、同じ現象ではまった方のためになればと解決法を示します。
現象としては、
(1)FlashCS6で特に代わり映えのしないアニメーションを作成。(this.stop()以外のActionScriptなし)
(2)パブリッシュ設定は初期値。(ターゲットはFlash Player 11.2、ActionScript3)
(3)書き出したswfをDreamweaverで「挿入」→「メディア」→「swf」で挿入。特に設定は変更しない。
上記の通り特に変わったことはせず、ほとんど初期設定のまま作業してできたファイル群をサーバーにアップロードします。
swfを挿入するときに、Dreamweaverが自動的に2つファイルを作成しますが、これらももちろんアップします。(「expressInstall.swf」と「swfobject_modified.js」)
アップが終わったら確認するわけですが、ここで問題発生。
Flashのムービーが表示されるべき場所が真っ白でなにも表示されません。
swfを直接開く(URLを直接指定する)と再生されたため、swf自体に問題があるわけでもなく、ブラウザのプラグインのバージョンが古いせいでもありません。
表示されない原因としてまず疑ったのは前述の「expressInstall.swf」と「swfobject_modified.js」。
ブラウザにインストールされているプラグインのバージョンを調べたりするためにDreamweaverが自動的に入れるものですが、結論から言うとこれらが直接の原因ではありませんでした。
というか、厳密に原因はまだ分かっていないのですが、解決法だけ示します。
「パブリッシュ設定」の「Flash(.swf)」の下の方にある「ローカルでの再生に関するセキュリティ」という項目に注目。
これ、たぶん最初は「ローカルファイルのみにアクセスする」となっていると思いますので、「ネットワークにのみアクセスする」に変更して書き出しをやり直してください。これで解決するかと思います。
実はこの現象、ターゲットを「Flash Player 9」にすれば、上述の 「ローカルでの再生に関するセキュリティ」は変更せずとも改善されます。
ここからは想像が入りますが、この 「ローカルでの再生に関するセキュリティ」は、 「ローカルファイルのみにアクセスする」になっている場合、swfが外部のファイルを読むとき、ローカルのファイルのみ読み込めるという意味のようです。
「ネットワークのみにアクセスする」は読んで字のごとく、サーバー側のデータのみにアクセスするという設定です。
Flash Playerはバージョンによってセキュリティの対応が少しずつ変わってきているので、もしかしたらFlash Player 10以降のバージョンで、「ローカルのファイルのみにアクセスする」を選んだ場合、 「expressInstall.swf」と「swfobject_modified.js」との関係でうまく動作しないのではないか、というように考えています。
何はともあれ、初期設定のまま進めていくとNGという点が問題だと思うのですが、探し方が悪かったのか同じ状況をネットでも見かけなかったので、もしかして何か他に初歩的な見過ごしが私の方にあるのかもしれません。
とにかく、同じ現象ではまった方のためになればと解決法を示します。
コメント