マウスをグルグル動かしていくと気持ちいいですねー。
こういう二度と同じものはできなさそうなフラクタルっぽいビジュアル好きです。
http://www.cesmes.fi/
どういうときに起きたか 外部にある、jpgやgifファイルをFlashが読み込んで表示させるコンテンツはよくあります。例えば、その時画像が、画像専用のサーバーにあって、swfファイルとは別のドメインにあるとします。普通に画像を読み込むだけでは問題ないのですが、その読み込んだ画像に対してsetMaskメソッドを使うと、下記のようなアラートが出ました。
*** セキュリティ Sandbox 違反 *** SecurityDomain 'http://image.www.hoge.co.jp/hoge.gif' が互換性のないコンテキスト 'file:///C/hoge.swf' にアクセスを試みました。 おそらく原因は、 setMask();メソッドが、外部画像を読み込んだMovieClipに対してマスクをかけるのではなく、なにか見えない力で外部画像がマスクをとりにいっている。そういうイメージなのかもしれません。つまりクロスドメインなんでしょうね。
解決方法 ActionScriptで下記を追加すると一発で直りました。
ActionScript 1
System.security.allowDomain("*"); いやぁ~いろいろ難しいですねーw ^-^;
つまりどういうことかというと 1.新規ウィンドウ、または新規タブでFlashが載っているページを開く。
2.ページ内リンク、a nameタグで移動する。
※このとき、ブラウザの戻るボタンが押せるようになっているはず。
3.ブラウザの戻るボタンを押す。
4.Flashが正しく表示されてない。
というバグ?を聞いたことがあります。いろいろ調べてみると、どうやらFirefoxやSafariは大丈夫で、IE6と7で確認しました。 そのFlashコンテンツは、外部XMLファイルを読み込んで、その中に書かれている画像パスから外部外部画像データをすべて読み込んでから再生する。 という仕組みになってて、再生するタイミングで、ステージの最前面に白いシェイプをおいて、そいつに対してdanndannアルファを0%に、フェードアウトして演出していました。
どうやら、戻るボタンを押したときに、なぜかタイムラインが1フレーム目に戻っているようにみられ、 最初のフレームにXMLの読み込みや画像の読み込みのAction Scriptは実行済みの状態でした。 Flash Playerのキャッシュかブラウザのキャッシュか。。 そして、最終的に考えられる条件というのが、「シーン」で再生しているということです。
解決方法 このように、「シーン」のタイムライン上で1フレーム目にいろいろAction Script、諸々の条件で再生。5フレーム目に移動していますね。 今回の問題点は、ページ内リンクからブラウザの戻るを押すと、同じページ内に戻ってくるわけですが、 Flashは5フレーム目に再生しきっている状態で戻ってしまうわけです。
回避方法は、シーンに1フレームだけにMovieClipをおいて、その中にAction Scriptやコンテンツを置いたら解消されました。 ただ、これでは同じページ内に戻ってきているにも関わらず、またXMLを読みにいったり画像をロードしたりすることになってしまいます。 ユーザビリティが悪い場合は、「シーン」の1フレーム目に書かれたAction Scriptですべてお完結させれば事済みますが、 既に作ってしまっているFlashを修正する場合は、新規シンボルで空のMovieClipを「シーン」1フレーム目に置いて、 「シーン」あったAction Scriptやコンテンツは、すべてさっき作った空のMovieClipの中にペーストしてしまいましょう。 そして「シーン」には1フレーム目にペーストしたMovieClipがあるだけ。 一応これで、ページ内リンクからブラウザの戻るボタンを押したときに挙動がおかしくなるのは避けれると思います。