- ベストアンサー
loadMovieのswf読み込み時の一瞬で困っています
- 初心者の質問者は、loadMovieを使用して外部swfを読み込む際に、_rootの画像が一瞬表示されてしまう問題に困っています。
- 作業内容は、top.swfにメニューを配置し、リンクを貼り、loadMovieを使用してswfファイルを切り替えることです。
- 外部swfファイルの背景の問題と思われ、ドキュメントサイズと同じサイズの背景色のムービークリップを配置しましたが、一瞬ではあるものの_rootの画像が表示されてしまいます。スムーズな切り替えをするための方法を教えていただけないでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
1つのムービークリップにロードするのではなく, 少なくとも2つ以上のムービークリップを用意して, その2つ以上のムービークリップに何某かのSWFをロードして, そのロードしたムービークリップを, それ以外のムービークリップの上(高い数値の深度)に持ち上げてやれば良いと思います。 具体的な方法やスクリプトは様々です。 たとえば現在作成されている状態であれば, ムービークリップ moviearea 内に新しい2つのムービークリップを作成して, その2つのムービークリップに交互に何某かのSWFをロードさせても良いと思います。 ムービークリップ moviearea 内に新しい2つのムービークリップを作成するのが手間であれば, 次のように ActionScript で作成しても良いと思います。 ムービークリップ moviearea が存在する _root のフレームに次のように書きます。 --------------------------------------------- // moviearea 内の 深度0 に空のMC 「my_mc0」 を作成 moviearea.createEmptyMovieClip("my_mc0", 0); // moviearea 内の 深度1 に空のMC 「my_mc1」 を作成 moviearea.createEmptyMovieClip("my_mc1", 1); // 変数 my_bit の初期化 var my_bit:Number = 1; --------------------------------------------- これで, ムービークリップ 「my_mc0」 と 「my_mc1」 が自動的に moviearea 内に作成されて, それを切り替えるための変数 「my_bit」 が用意されます。 そして,各ボタンには次のように書きます。 ■aboutボタン ----------------------------------------- on (release) { // my_bit が 0 であれば 1 に, 1 であれば 0 にする _root.my_bit ^= 1; // moviearea 内の my_mc0 か 1 に about.swf をロード _root.moviearea["my_mc"+_root.my_bit].loadMovie("about.swf"); // その my_mc0 か 1 を深度1にする _root.moviearea["my_mc"+_root.my_bit].swapDepths(1); } ----------------------------------------- ■catalogボタン ----------------------------------------- on (release) { // my_bit が 0 であれば 1 に, 1 であれば 0 にする _root.my_bit ^= 1; // moviearea 内の my_mc0 か 1 に catalog.swf をロード _root.moviearea["my_mc"+_root.my_bit].loadMovie("catalog.swf"); // その my_mc0 か 1 を 深度1 にする _root.moviearea["my_mc"+_root.my_bit].swapDepths(1); } ----------------------------------------- ■serviceボタン ----------------------------------------- on (release) { // my_bit が 0 であれば 1 に, 1 であれば 0 にする _root.my_bit ^= 1; // moviearea 内の my_mc0 か 1 に service.swf をロード _root.moviearea["my_mc"+_root.my_bit].loadMovie("service.swf"); // その my_mc0 か 1 を 深度1 にする _root.moviearea["my_mc"+_root.my_bit].swapDepths(1); } ----------------------------------------- 上にも書きましたが, 具体的な構造作成やActionScriptの書き方は様々です。 ですから,上に示したものはほんの一例です。 function を用意するなどすれば, 工夫次第で,もっとスマートな書き方もできると思います。
その他の回答 (1)
こんにちは。 CS3よりも古いバージョンなので詳しくは分からないのですが、あらかじめ読み込んで置く事は出来ませんか? 今の状態だと ◆ボタンを押す → 読み込む → 表示する と、なっているので読み込み中に空白の時間が出来るはずです。 ◆読み込む(隠しておく) → ボタンを押す → 表示する とすれば解決するはずです。
お礼
BlurFiltanさん、丁寧で分かり易い回答ありがとうございました。 ソースをそのまま貼り付けたら希望通りの動きになりました! 本当にありがとうございます。