Flash8でページの切り替えにフェードイン/フェードアウトを実装する方法

このQ&Aのポイント
  • Flash8でページの切り替え時にフェードイン/フェードアウトを実装する方法について教えてください。
  • フラグ名A、B、Cによるフレームの移動時に徐々に画面を切り替える方法はありますか?
  • ボタンの押す順番に関係なく、移動先の画面をフェードインしながら表示する方法を教えてください。
回答を見る
  • ベストアンサー

ページの切り替えのフェードイン/フェードアウトについて

Flash8で1つのタイムライン上に フレーム1~30にフラグ名A フレーム31~60にフラグ名B フレーム61~90にフラグ名Cと設定しています。 各フラグの最後のフレームにはstop();が入っています。 そしてフレーム1~90にボタンX,Y,Zを配置し、 ボタンXはフラグ名A ボタンYはフラグ名B ボタンZはフラグ名Cに on (release) { gotoAndPlay( "フラグ名" ); } で移動するようにしています。 ボタンによるフレームの移動の際に、 今表示されている画面に移動先の画面をフェードインしながら表示させたいのですが、どうすればいいのでしょうか。 例えば、フラグ名Aの30フレームの画面が表示されていて、(ストップしていて、) ボタンZでフラグ名Cに移動する際に、 フラグ名Aの30フレームの画面からフラグ名Cの画面に徐々に切り替わるような感じにしたいです。 ボタンの押す順番などは決まっていないため、どんな順番でボタンを押したとしても、 今表示されている画面に移動先の画面をフェードインしながら表示させたいのです。 お分かりになる方ぜひ教えて下さい! よろしくお願いします。 使用環境 Flash8 WindowsXP SP2

  • Flash
  • 回答数1
  • ありがとう数1

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

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

フラグ ではなくて, フレームラベルだと思いますよ。 細かいことはさておき, ご質問で書かれていらっしゃる内容自体はよく理解できました。 何にしてもその方法では書かれていらっしゃることを実現するのは無理です。 根本的にムービーのしくみ全体を作りなおさないとできません。 フレーム1~30 を ムービークリップA内に作成 フレーム31~60 を ムービークリップB内に作成 フレーム61~90 をムービークリップC内に作成して, 各ムービークリップを 上下(前面背面)にならべて, 他のムービークリップを今見えているムービークリップの上に徐々に表示させる。 というようなしくみを作る必要があります。 (ムービークリップA,B,C は仮称です。) そしてさらに, ムービークリップA,B,Cの背景(ムービークリップ内の最下レイヤー)には,何かを置くか描くかしておかないとなりません。 イメージはわかりますでしょうか。 このページ↓にある半透明の赤・緑・青のようなムービークリップの深度移動が必要です。 Flashゲーム講座&ASサンプル集【深度について】 「深度を変更する」 http://hakuhin.hp.infoseek.co.jp/main/as/z.html#Z_01 ↑これのさらに複雑版のようなものです。 というわけで, 簡単な作り方例を説明します。 新規ドキュメントを作成して, ステージ全体に 赤い塗りの長方形 を描き, その 赤い塗り を ムービークリップ に変換します。 そして, その赤ムービークリップに 「mc0」 というインスタンス名を付けます。 以下にも登場する mc および MC はムービークリップ(MovieClip)の略の意味です。 その「mc0」をダブルクリックして,「mc0」内のタイムラインの編集に移ります。 「mc0」内には赤い塗りがあると思いますから, その赤い塗りのあるレイヤーの上に新規レイヤーを追加して, 「緑色のボタン」と「青色のボタン」を作成します。 そこまでできたら,「編集」→「ドキュメントの編集」で _root の編集に戻ります。 赤ムービークリップ「mc0」 のあるレイヤーの "下" に新規レイヤーを追加して, 赤ムービークリップ「mc0」 のあるレイヤーを ロック&非表示 状態にして, 新規レイヤーのステージ全体に 緑の塗りの長方形 を描き, その 緑の塗り を ムービークリップ に変換します。 そして, その緑ムービークリップに 「mc1」 というインスタンス名を付けます。 その「mc1」をダブルクリックして,「mc1」内のタイムラインの編集に移ります。 「mc1」内には緑の塗りがあると思いますから, その緑の塗りのあるレイヤーの上に新規レイヤーを追加して, 「赤色のボタン」と「青色のボタン」を作成します。 そこまでできたら,「編集」→「ドキュメントの編集」で _root の編集に戻ります。 そしてさらに, 緑ムービークリップ「mc1」 のあるレイヤーの "下" に新規レイヤーを追加して, 緑ムービークリップ「mc1」 のあるレイヤーを ロック&非表示 状態にして, 新規レイヤーのステージ全体に 青の塗りの長方形 を描き, その 青の塗り を ムービークリップ に変換します。 そして, その青ムービークリップに 「mc2」 というインスタンス名を付けます。 その「mc2」をダブルクリックして,「mc2」内のタイムラインの編集に移ります。 「mc2」内には青の塗りがあると思いますから, その青の塗りのあるレイヤーの上に新規レイヤーを追加して, 「赤色のボタン」と「緑色のボタン」を作成します。 そこまでできたら,「編集」→「ドキュメントの編集」で _root の編集に戻ります。 そして, 「mc0」~「mc2」があるレイヤーより上に,新規レイヤーを追加して, そのフレームにActionScriptを書くことにします。 ここまでで,_root のタイムラインのレイヤーは次のような状態になっています。  □ レイヤー 筆・・|○| ←ActionScript用  □ レイヤー 筆・・|●| ←赤の「mc0」  □ レイヤー 筆・・|●| ←緑の「mc1」  □ レイヤー 筆・・|●| ←青の「mc2」 そして,ActionScript 用レイヤーには次のように書きます。 ---------------------------------- // 深度を表す変数 dps の初期化 dps = 0; // // 1フレーム進む時間ことに毎回実行 _root.onEnterFrame = function() { for (i=0; i<=2; i++) { // もし mc? のアルファが 100 以上であれば if (_root["mc"+i]._alpha>=100) { // mc? のアルファを 100 で固定 _root["mc"+i]._alpha = 100; } else { // それ以外であれば 10 ずつ加算(※可変) _root["mc"+i]._alpha += 10; } } }; ---------------------------------- そして再び各ムービークリップ内の編集に戻り, 作成したボタンにスクリプトを書いて行きます。 緑の「mc1」と,青の「mc2」の中にある, 「赤色のボタン」には次のように書きます。 --------------------------------- // 赤色のボタン クリックで on (release) { // mc0(赤MC)のアルファを 0 にする _root.mc0._alpha = 0; // mc0(赤MC)の深度を _root.dps に変更 _root.mc0.swapDepths(_root.dps); // mc0(赤MC)のフレームを1に戻してplay _root.mc0.gotoAndPlay(1); // _root.dps の値に 1 を加算する _root.dps++; } --------------------------------- 赤の「mc0」と,青の「mc2」の中にある, 「緑色のボタン」には次のように書きます。 --------------------------------- // 緑色のボタン クリックで on (release) { // mc1(緑MC)のアルファを 0 にする _root.mc1._alpha = 0; // mc1(緑MC)の深度を _root.dps に変更 _root.mc1.swapDepths(_root.dps); // mc1(緑MC)のフレームを1に戻してplay _root.mc1.gotoAndPlay(1); // _root.dps の値に 1 を加算する _root.dps++; } --------------------------------- 赤の「mc0」と,緑の「mc1」の中にある, 「青色のボタン」には次のように書きます。 --------------------------------- // 青色のボタン クリックで on (release) { // mc2(青MC)のアルファを 0 にする _root.mc2._alpha = 0; // mc2(青MC)の深度を _root.dps に変更 _root.mc2.swapDepths(_root.dps); // mc2(青MC)のフレームを1に戻してplay _root.mc2.gotoAndPlay(1); // _root.dps の値に 1 を加算する _root.dps++; } --------------------------------- そして,パブリッシュしてもらうと, 各色のボタンクリックによって,その色のムービークリップが徐々に出てくるものができると思います。 長く書きましたが, 単純作業の繰り返しです。 各ムービークリップを単フレームではなく, 複数フレームにすれば良いわけです。 今現在作られているフレーム1~90まであるアニメーションにも, 新しいレイヤーと新しいムービークリップを作成して, そのムービークリップ内に既存のものをコピペできますから無駄にはならないと思います。 第15回 アニメーション作成の手抜きテクニック http://itpro.nikkeibp.co.jp/article/COLUMN/20060705/242544/ → フレーム全体をコピーする 以上で書いたように, ムービークリップ内に色々なアニメーションを用意した方が, いろいろと面白いことが可能になります。 特にこのご質問にあるように面白いことをする場合は, 以降もムービークリップを活用する方向でムービー全体の構造を考える方が良いと思います。

rose_web
質問者

お礼

sassakun様 本当にいつも有難うございます。 教えて頂いたように作り直しました! 基本的には無事に動いたのですが、 わからない点が2つありましたので、 新しく質問を投稿しています。 もしよろしければ教えて下さい。 質問URL http://okwave.jp/qa3066417.html

rose_web
質問者

補足

sassakun様 いつもご回答有難うございます!本当に助かります。 > フラグ ではなくて, > フレームラベルだと思いますよ。 すみません(汗) 作ってみたのですが・・・ もう、まさにこの通りです! ムービークリップは便利ですね! 早速、コピペして作ってみます。 ~少々あつかましいですが・・・~ 今日質問させて頂いた後に長時間ネット検索をしていたところ、 ”画面キャプチャを利用しフレームの切り替え時にクロスフェードさせる。” というページを発見しました。 URL http://d.hatena.ne.jp/hororiholy/?of=10 ダウンロードしたScreenEffect.as とFLAファイルを同じフォルダにおいて ”ScreenEffect.crossFade( 20 ); //切り替えに要する時間を20とする。”を ボタンX、ボタンY、ボタンZに貼り付けてハブリッシュしても フレーム1、フレーム31、フレーム61に貼り付けてハブリッシュしても クロスフェードできませんでした。 画面をキャプチャーすると書いていたので、 文字をムービークリップにはしていません。 使用写真はJPGではなくPNGです。 また、ダウンロードした(本家の)FLAファイルでも ScreenEffect.crossFade( 20 ); の20の部分を50にしたら クロスフェードになりませんでした。 もし解決方法がお分かりになる場合はぜひ教えて頂きたいです。 よろしくお願いします。

関連するQ&A

  • ボタンをクリックするとフェードイン、フェードアウトする方法。

    こんにちは、スクリプトでのフェードイン・フェードアウト表示についての質問なのです。ヴァージョンはFlash MXです。 既存の質問で Flashでボタンをクリックするとフェードイン、フェードアウトする。 の応用を教えていただきたいのですが、 http://oshiete1.goo.ne.jp/qa2766651.html ステージ上にあるいくつかのボタンを押した時に、ある表示部分がフェードアウトし新たな画像がフェードインで表示するようにさせたいのですが、この時各ボタンによって表示部分を変えたい、つまり /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// ///////////////////////////表示画像//////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// ボタンA ボタンB ボタンC ボタンD ボタンAをクリック時にA画像を ボタンBをクリック時にB画像を フェードイン・フェードアウト表示させたいのです。 つまりフェードアウトした後指定したフレームへ移動させたいのです。 これを複数ボタンで分ける方法がわかりません。 ボタンが一つなら on (release) { // ムービークリップ my_mc 内の変数 flag の値を 1 にする _root.my_mc.flag = 1; } のmy_mcの部分をその画像のインスタンス名へ変えればできるのですが、ボタン数が複数になると一つしか指定できないのでこのやり方では無理です。 ムービークリップがボタン代わりであれば直接スクリプトを書いて on (release) { // 変数 flag の値を 1 にする flag = 1; } と命令することもできるのですが。 質問が分かりにくくて申し訳ありません。 もしご存じの方がおられましたら教えていただきたいです。 よろしくお願いします。

  • スクリプトでサウンドのフェードイン、フェードアウト

    いつも、ありがとうございます。FLASH8です。 フレームスクリプトからのサウンドのフェードイン、フェードアウト制御についてお聞きします。 ナレーションがスタートしたらBGMをフェードアウト、ナレーションが終わったらBGMをフェードインさせたいのですが、見えないところにムービークリップを作ってムービークリップを読み込む度にサウンドレベルをプラス(マイナス)していき、それをフレームから変数を使って制御する方法で可能でしょうか?また、もっと良い方法があるでしょうか? よろしく、お願いします。

    • ベストアンサー
    • Flash
  • サウンドのフェードイン・アウト

    製作環境はXPのMXです。 サウンドをattachSoundでライブラリから呼び出して流しているのですが、一番最初にフェードインさせて流したいときはどのように書けばいいでしょうか? また、on/offボタンを設置していて、今はstart/stopで制御しているのですが、これもフェードイン・アウトさせるようにしたいのですが、どう書けばいいしょでしょうか? 詳しい方がいましたら教えてください。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • フェードイン、フェードアウトの「オバーラップ」について

    flash初心者です。 AS2.0です。よろしくお願いいたします。 ボタンでムビークリップを切り替える時、 フェードイン、フェードアウトの「オバーラップ」に したいのですが。 (A_mcがフェードアウトする同じタイミングで B_mcがフェードインする) ムービークリップが大量にあるので ムービークリップそれぞれに同一のスクリプトで フェードイン、フェードアウトを設定して効率化 したいと考えています。 フェードインは onClipEvent (load) { this._alpha = 0; } onClipEvent (enterFrame) { if (this._alpha<100) { this._alpha += 2; } } のようなスクリプトで実現できたのですが フェードアウトがわかりません。 ※イメージの関係でフェードアウトがどうしても必要になりました。 onClipEvent (unload) { } のようなタイミングで制御できればと 考えているのですが 具体的にアドバイスいただると助かります よろしくお願いいたします。

  • Flashでボタンをクリックするとフェードイン、フェードアウトする

    アクションスクリプト初心者なのですが、 スクリプトで、ボタンをクリックすると 現在のフレームのムービークリップがフェードアウトしながら、 次のページのムービークリップがフェードインする方法を ご存知でしたら、教えていただけないでしょうか。 ムービークリップがロードしたら、 フェードインするところまでは出来たのですが、 それだと、現在のムービークリップがフェードアウトしないので 困っています。 ムービークリップがロードしたら、 フェードインするスクリプトは、 onClipEvent (load) { _alpha = 0; } onClipEvent (enterFrame) { _alpha += 2; } と記載しております。 どうぞよろしくお願いします。

    • ベストアンサー
    • Flash
  • サムネイルクリックで外部swfフェードイン&アウト

    Flash初心者です。 Flash MX 2004を使っています。 24枚のサムネイル画像をonClipEventで 3枚ずつの間隔で左右に移動するようにしています。 各サムネイル画像(ボタン)をクリックすると、 拡大画像(外部swf)がサムネイルにかぶさるように フェードインで表示され、 ムービークリップシンボル範囲内のどこをクリックしても フェードアウトで元の画面(サムネイル表示画面)にもどる。 他サムネイルをクリックしても同様の動作をする。 というふうにしたいのです。 サムネイルaの拡大swfであるAにはフェードインを施しました。 クリックすると閉じながらフェードアウトさせるには、 どのような方法があるのでしょうか。

  • FLASH ボタンフォーカスインしたときにフェードインでニュースを表示したい

    FLASH8の質問です。 初心者ですが、長方形の枠を4つ横に下記のように並べています。 「ニュース表示枠」「ボタン1」「ボタン2」「ボタン3」 |ニュース| |ボタン| |ボタン| |ボタン| |表示枠 | | 1 | | 2 |  | 3 | ボタン1~ボタン3までをマウスポインタを置いたときに、「ニュース表示枠」にそれぞれのニュースをフェードインでやんわりと表示します。 そして、ボタン1~ボタン3までをマウスポインタが離れたときに、「ニュース表示枠」にメインのニュースをフェードインでやんわりと表示したいのですが、方法が悪いのか、フェードイン表示するときに、前の文字と瞬間重なってしまい、読み辛くなります。 どなたか良い方法を教えていただけますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • フェードインした画像をストップさせたいのですが・・(Flash MX 2004)

    いつもお世話になっております。 今回もご指導のほど、宜しくお願い致します。 Macromedia を使って、画像をフェードインしたのですが フェードイン後、画像がそのまま表示される(ストップ)には どのように設定するといいのでしょうか? 過去に同じ内容の質問があったのですが お答えが私には理解できず、改めて質問させていただきました。 過去のお答えには、 「最後のフレームにキーフレームを作って、フレームスクリプトにstop();を追加すればそこで止まります。」 と、ご指導がありました。 ですがフレームスクリプトをどこで編集するのかわかりません・・ 宜しくお願い致します。

  • 前回のフェードイン/フェードアウトの続きなんですが・・・

    昨日、sassakun様にご回答いただいたように、 ムービークリップでFLASHを作り直させて頂きました。 基本的には無事に動いたのですが、 問題点が2点ありますので、もしよろしければ教えて下さい。 1つ目は、 ボタンでMCを読み込むにつれて、swfファイルの動きが大変遅くなってしまうという現象です。 不要になったMC(階層が一つ下になった時点/最上位階層でなくなった時点)を をremoviMovieClip()で消滅させたいと思い、 各ムービークリップの45フレーム目に (45フレームまでがフェードイン/アウトで重ねたい部分なので) そのMC以外を指定してアクションスクリプトを記入したのですが、 消えませんでした。 記入したアクションスクリプトは、 mc0の45フレーム目に mc1.removeMovieClip(); mc2.removeMovieClip(); mc1の45フレーム目に mc0.removeMovieClip(); mc2.removeMovieClip(); mc2の45フレーム目に mc0.removeMovieClip(); mc1.removeMovieClip(); です。 2つ目は、 Fumio Nonaka.com様の3D_Boxをmc2にコピーしたのですが、 立方体が表示されなくなってしまいました。 これについては全くわからないのですが、 深度に関係があるのでしょうか? <利用させて頂いているアクションスクリプトの掲載URL> http://www.fumiononaka.com/Sample/3D_Box/3D_Box.html 下段のSource to download (約192KB/Flash 8形式): 3D_Box.zip 以上、2点の解決方法を教えて頂けないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • 画像をフェードアウト&フェードインで切り替えたい

    jQueryを使っています。 「<ul id="cat-list">」の「href」を取得して画像を切り替えています。 その際にフェードアウトして画像が消え、次の画像をフェードインさせながら表示したいと考えています。 (クロスフェードならなお良いです。) 色々試したのですが、フェードのタイミングがうまく合ってくれません。 どのように記述したらいいでしょうか。 <script type="text/javascript"> $(function(){  $("#cat-list a").click(function(){   $("p#cat img").attr("src",$(this).attr("href")).attr("alt",$(this).text());   $("p#cat-name").text($(this).text());   return false;  }); }); </script> <p id="cat"><img src="images/cat01.jpg" alt="ネコ1" /></p> <p id="cat-name">ネコ1</p> <ul id="cat-list">  <li><a href="images/cat01.jpg">ネコ1</a></li>  <li><a href="images/cat02.jpg">ネコ2</a></li>  <li><a href="images/cat03.jpg">ネコ3</a></li>  <li><a href="images/cat04.jpg">ネコ4</a></li>  <li><a href="images/cat05.jpg">ネコ5</a></li> </ul> よろしくお願いします。

専門家に質問してみよう