つまりどういうことかというと

1.新規ウィンドウ、または新規タブでFlashが載っているページを開く。
2.ページ内リンク、a nameタグで移動する。
※このとき、ブラウザの戻るボタンが押せるようになっているはず。
3.ブラウザの戻るボタンを押す。
4.Flashが正しく表示されてない。

というバグ?を聞いたことがあります。いろいろ調べてみると、どうやらFirefoxやSafariは大丈夫で、IE6と7で確認しました。 そのFlashコンテンツは、外部XMLファイルを読み込んで、その中に書かれている画像パスから外部外部画像データをすべて読み込んでから再生する。 という仕組みになってて、再生するタイミングで、ステージの最前面に白いシェイプをおいて、そいつに対してdanndannアルファを0%に、フェードアウトして演出していました。

どうやら、戻るボタンを押したときに、なぜかタイムラインが1フレーム目に戻っているようにみられ、 最初のフレームにXMLの読み込みや画像の読み込みのAction Scriptは実行済みの状態でした。 Flash Playerのキャッシュかブラウザのキャッシュか。。 そして、最終的に考えられる条件というのが、「シーン」で再生しているということです。

解決方法

090923_01

このように、「シーン」のタイムライン上で1フレーム目にいろいろAction Script、諸々の条件で再生。5フレーム目に移動していますね。 今回の問題点は、ページ内リンクからブラウザの戻るを押すと、同じページ内に戻ってくるわけですが、 Flashは5フレーム目に再生しきっている状態で戻ってしまうわけです。

090923_02

回避方法は、シーンに1フレームだけにMovieClipをおいて、その中にAction Scriptやコンテンツを置いたら解消されました。 ただ、これでは同じページ内に戻ってきているにも関わらず、またXMLを読みにいったり画像をロードしたりすることになってしまいます。 ユーザビリティが悪い場合は、「シーン」の1フレーム目に書かれたAction Scriptですべてお完結させれば事済みますが、 既に作ってしまっているFlashを修正する場合は、新規シンボルで空のMovieClipを「シーン」1フレーム目に置いて、 「シーン」あったAction Scriptやコンテンツは、すべてさっき作った空のMovieClipの中にペーストしてしまいましょう。 そして「シーン」には1フレーム目にペーストしたMovieClipがあるだけ。 一応これで、ページ内リンクからブラウザの戻るボタンを押したときに挙動がおかしくなるのは避けれると思います。