• 締切済み

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

こんにちは、スクリプトでのフェードイン・フェードアウト表示についての質問なのです。ヴァージョンは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; } と命令することもできるのですが。 質問が分かりにくくて申し訳ありません。 もしご存じの方がおられましたら教えていただきたいです。 よろしくお願いします。

みんなの回答

  • perse
  • ベストアンサー率74% (113/152)
回答No.2

自己解決したようですが気になったのでちょっと失礼。 複数のボタンでそれぞれ_root.gotoAndPlayの移動先を変えたいなら btA.onRelease = function() { _root.ムービークリップインスタンス名.flag = 1 _root.ムービークリップインスタンス名.jump = "A" } btB.onRelease = function() { _root.ムービークリップインスタンス名.flag = 1 _root.ムービークリップインスタンス名.jump = "B" } の様に適当な変数(jump)を作って if (_alpha<=0) { // ただし アルファ が 0 以下になったら 次のフレームへ _root.gotoAndPlay(_root.ムービークリップインスタンス名.jump); } //(上下のスクリプトは略) でいいと思います。

chikchik
質問者

お礼

ご回答ありがぞうございます。 なるほど、そのようなやり方もあるのですね、試してみます。 まだまだアクションスクリプトは初心者で初歩段階から勉強中ですが最近少しずつ楽しくなってきました。 どうも、ありがとうございました。

  • valvalval
  • ベストアンサー率57% (105/184)
回答No.1

ボタンにインスタンス名を付けて インスタンス名.on (release) { と書けば、ボタン数の分だけ記述できますよ。 ヘルプにあります。

chikchik
質問者

お礼

自己解決できました。 仮にボタンをbtAとし表示画像をmcAとして 次の表示画像をmcBとするならば 下記のように表記することで解決しました。 複雑に考えすぎていました。 _____________________________________________ btA.onRelease = function() { _root.mcA.onEnterFrame = function() { if (mcA._alpha>0) { mcA._alpha -= 10; //徐々に消える } else { mcA._alpha = 0; mcA._visible = 0; gotoAndPlay("mcB"); } }; }; _____________________________________________ そして次に現れるmcBに フェードインのスクリプトを書きます。 複数ボタンを設定する時はボタン名を変え、表示画像を変えるときは mcB部分を変えます。 しかしこのやり方ではスクリプト自体が長くなりすぎるため、もう少しスマートなやり方があるかもしれません。 ありがとうございました。

chikchik
質問者

補足

ご回答ありがとうございます。 申し訳ございません。私の質問が分かりにくかったです。 http://oshiete1.goo.ne.jp/qa2766651.html? 上記リンクと同じく 今はムービークリップ自体に ----------------------------------------------- onClipEvent (load) { // 別のところに書いていれば不要↓ _root.stop(); _alpha = 0; // 変数 flag の値を 0 に設定 var flag = 0; } //------ onClipEvent (enterFrame) { // if (flag == 0) { // もし 変数 flag の値が 0 であれば フェードイン _alpha += 2; // ただし,アルファが 100 以上になったら 100 に固定 if (_alpha>=100) { _alpha = 100; } // } else { // flag が 0 以外は フェードアウト _alpha -= 2; if (_alpha<=0) { // ただし アルファ が 0 以下になったら 次のフレームへ _root.gotoAndPlay("フレームラベルA(仮)"); } } } //------ と書いてスクリプトレイヤーに ボタンインスタンス名.on(release){ _root.ムービークリップインスタンス名.flag = 1; } と書いています。 ----------------------------------------------- しかしこのやり方ではボタンを押したときにflagの値が1になり どのボタンを押してもフレームラベルA(仮)へとジャンプしてし まいます。 これをボタンによって振り分けたいのですが、 ボタンAを押したとき、表示画像がフェードアウトしフェードアウトが終わると指定フレームAへ。 ボタンBを押したとき、表示画像がフェードアウトしフェードアウトが終わると指定フレームBへ。 このように命令して各指定フレームの画像を表示させる時にフェードインで 表示するように命令すればいいのかと、考えたのですがスクリプトでの書き方が分かりません。 教えて頂けると助かります。 よろしくお願いします。

関連するQ&A

専門家に質問してみよう