• ベストアンサー

flashサイトのページ移動の際のアクションについて

flashのみでサイトを作っている初心者です。 ボタンを4つ作り、それぞれ押すと外部フラッシュのムービーをステージ中央に読み込むという、一般的なものです。 質問したいのは、各ボタンをクリックした時に新しいムービーが出るのですが、 現在流れているムービーからいきなり切り替わるのではなく、 別のボタンをクリック ↓ 現在流れているムービーが徐々に消えていく ↓ 新しいムービーが流れ出す という感じにしたいのです。 どうしてもボタンをクリックして、徐々に消えるのではなく、 いきなり切り替わるというやり方しかわからないのですが、 考え方の概念が全然違うのでしょうか? どこか詳しく説明が載っているサイトなど、 どなたかご指摘お願いいたします。 イメージとしてはこんな感じです。 http://www.sunnydays.jp/futsal/

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.2

すごく単純なパターンだとボタンのスクリプトだけで 「現在流れているムービーが徐々に消えていく→新しいムービーが流れ出す」ができます。 まず外部フラッシュ読み込むためのムービークリップを作ります。 インスタンス名を「loadMC」とでもしておきます。 この「loadMC」をフェードアウト(徐々に消えていく)させて,フェードアウトしきったときに,新しい外部フラッシュを読み込む。 そういう流れになりますです。 それを,具体的なスクリプトにします。 読み込む外部Flashの名前を「movie1.swf」~「movie4.swf」としておきます。 それで「movie1.swf」を読み込ませるボタンには,以下のように書きます。 他にも書き方はありますが例だと思ってください。 ---------------------------------------- on (release) { _root.loadMC._alpha -= 1; this.onEnterFrame = function() { if (_root.loadMC._alpha<=99) { _root.loadMC._alpha -= 3; } if (_root.loadMC._alpha<=0) { loadMovie("movie1.swf", "_root.loadMC"); _root.loadMC._alpha = 100; } }; } ---------------------------------------- 「movie2.swf」~「movie4.swf」を読み込ませるボタンは,8行目, loadMovie("movie1.swf", "_root.loadMC"); の部分を変えるだけで使えます。 ---説明-------------------------------- on (release) { //※1 _root.loadMC._alpha -= 1; //onEnterFrameでフレームレート毎に1回以下を計算 this.onEnterFrame = function() { //もし「loadMC」のアルファが99以下であれば if (_root.loadMC._alpha<=99) { //「loadMC」のアルファを3ずつ減らす _root.loadMC._alpha -= 3; } //もし「loadMC」のアルファが0になったら if (_root.loadMC._alpha<=0) { //「loadMC」に「movie1.swf」を読み込み loadMovie("movie1.swf", "_root.loadMC"); //「loadMC」のアルファを100で固定※2 _root.loadMC._alpha = 100; } }; } -------------------------------------- ※2で alpha >= 100 であれば, alpha = 100 で固定 としてあるので,最初 alpha = 100 であった場合そのまま固定されてしまわないよう, ※1は alpha -= 1 としてあります。 最初の最初のTOPの画面もフェードアウトさせるときは, その画面も外部Flashにしておいて,あらかじめ「loadMC」にロードしておくと, 他のと同様にフェードアウトします。 でも,示されているサンプルはフェードアウトは,こんな単純ではありません。 要は,フェードアウト用のムービークリップ(だんだん白で埋め尽くされていくムービー)を作ってそのムービークリップがフェードアウトしきった状態(白で埋め尽くされた状態)のときに,外部Flashを読み込むしくみにしないとならないと思います。 フェードアウト用のムービークリップを作るのは大変かもしれませんが, スクリプトは極めて簡単です。 外部Flashを読み込むためのムービークリップを「loadMC」としておきます。 その「loadMC」とボタンとの間のレイヤーにフェードアウト用のムービークリップを作ります。 そのフェードアウト用のムービークリップのインスタンス名を「fOut」としておきます。 そのムービークリップ「fOut」の1フレーム目には ----------- stop(); ----------- を書いておきます。 それでフェードアウトしきったフレームには, ------------------------------------- loadMovie(_root.MV, "_root.loadMC"); //gotoAndStop(1); ------------------------------------- と書いておきます。 MVは変数名で,この変数にボタンから,外部Flashの名前やパスの値を代入すれば良いわけです。 //gotoAndStop(1);はあってもなくても良いです。 「movie1.swf」を読み込むボタンには, ------------------------------------- on (release) { _root.MV = "movie1.swf"; _root.fOut.gotoAndPlay(2); } ------------------------------------- と書きます。 「movie2.swf」~「movie4.swf」を読み込ませるボタンでは, _root.MV = "movie1.swf"; の部分を変えるだけで良いです。 これだけです。 何をどうしたいのか,順序だてて考え,それをスクリプトや動作に置き換えれば良いわけです。 今回の場合は,「フェードアウトする」→「外部Flashを読み込む」という2段階の動作が出てきます。 同時に考えるとグシャグシャになるので, 「フェードアウト」は「フェードアウト」,「読み込み」は「読み込み」。 それぞれを別々に考えて,順序通り動くように合体させれば良いと思います。 こういう組み合わせ的な物は人によって,また場合によって違います。 まだまだ,他にも方法はあると思いますし「どうするか」という定型はありません。 それに覚える物でもないです。なるべく良い物になるようにその都度考えてください。  

nimuo
質問者

お礼

ありがとうございます^^ 非常に丁寧に説明してくださって、感謝しています。 早速実践してみて、少し理解できた感じでした。 そうですね、たしかにその都度考えるというのも必要ですね^^; まだまだ勉強する事が多いですが、めげずに頑張っていきますm(_ _)m

その他の回答 (1)

  • rightegg
  • ベストアンサー率41% (1357/3236)
回答No.1

こんばんは。 やり方は人によって様々です。 概念も何もあなたがどういう風に実現しようとしているか書いてませんしね(笑)。 考え方の例: ボタンで読み込むのではなく、ページ移動用のフレームへ飛ばす。 *何を読み込むかは変数として格納するか、先に命令だけ出して非表示にしておく。

nimuo
質問者

お礼

ありがとうございます。 そうですね、もう少しいろいろ勉強してからでないと、なかなか上手く質問もできませんね。。 すみませんでしたm(_ _)m

関連するQ&A