ボタンから一つ上の階層のムービークリックを徐々にアルファ値を上げたり下げたりする

このQ&Aのポイント
  • ボタンから一つ上の階層のムービークリップのアルファ値を徐々に上げたり下げたりする方法について教えてください
  • ムービークリックのアルファ値をボタンから制御する方法について教えてください
  • ボタンをクリックした際にムービークリップのアルファ値が徐々に変化する方法について教えてください
回答を見る
  • ベストアンサー

ボタンから一つ上の階層のムービークリックを徐々にアルファ値を上げたり下げたりする。

はじめまして、jpncan15といいます。 初めて質問させていただきます。 階層がややこしい状態ですが、ボタンから一つ上の階層のムービークリップのアルファ値を徐々に上げたり下げたりしたいのですが、なかなかうまく行かず昨晩から悩み中です。 もし、ご存じの方がいればご教授お願いいたします!! ○状況 シーン1  mc1(ムービークリップ)   mc2(ムービークリップ:インスタンス名:image)   mc3(ムービークリップ) buttan(ボタン:ボタン名:b1) ○buttan(ボタン:ボタン名:b1)のスクリプト ※触っていると、アルファ値が0→70%に変わって行く。 ボタンをはなすとアルファ値が70→0%変わって行く。 ※このスクリプトだと、徐々に変わって行くのではなくいきなり、アルファ値が「5」変わるだけなのです。。。 on (rollOver) { if (this._parent.image._alpha < 70){ this.common_b._alpha += 5; } } on (rollOut) { if (this._parent.image._alpha > 70){ this.common_b._alpha -= 5; } }

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

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

  • ベストアンサー
  • gonagona
  • ベストアンサー率80% (12/15)
回答No.1

こんにちは。 確かにrollOverやrollOutだと「乗った」「乗らない」の1回しか処理はされないので、 アルファが1回分しか変わらないんだと思います。 rollOverやrollOutの中にonEnterFrameを入れてみては如何でしょう? ====================================================================== on (rollOver) { this.onEnterFrame = function(){ if (this._parent.image._alpha < 70){ this.common_b._alpha += 5; } } } on (rollOut) { this.onEnterFrame = function(){ //▼数字が「70」となっていましたが、「0」ですよね? if (this._parent.image._alpha > 0){ this.common_b._alpha -= 5; } } } ====================================================================== 尚、「common_b」というのが何を指しているのか分からないのですが、 「this.common_b._alpha」は「this._parent.image._alpha」で良いのでは・・・?

jpncan15
質問者

お礼

gonagonaさん こんばんわ。 ありがとうございます! そうか!と膝を思わずたたきました。 ボタンは1回しか処理されないですよね! 解説も分かりやすく、感激です。 ※「common_b」は私の間違えです。スミマセン。 スクリプトを修正して無事解決しました。 本当にありがとうございます!

関連するQ&A

  • ムービークリップ内のボタン

    フラッシュ初心者です。 アクションスクリプトがうまく動かず困っています。 シーン1にムービークリップ1(インスタンス名:mc1)とムービークリップ2(インスタンス名:mc2)が置いてあります。 mc2の中にはボタンAを配置してあり、ボタンAをクリックすると、mc1のフレームラベル(B)に飛ぶような制御をしたいです。 ボタンAに記述してあるスクリプトは以下です。 on (release) { this._parent.mc1.gotoAndplay("B"); } しかしクリックしても全く動きません。 絶対パスで指定してもダメでした。 ちなみに、ためしに、mc1ではなく、シーン1上のフレームラベルに 飛ばすように記述したら普通に動きました。。 何か記述間違いがあるのでしょうか? 分かる方がいましたら教えてください。 お願いします。

  • ActionScript3.0フレーム移動について

    お世話になります。 Flash ActionScript3.0で、ボタンをクリックしたら、 階層違いのシーンに移動するという 単純なところでつまずいています。 一番上の階層には、 1フレーム目 フレームラベル "a" 2フレーム目 フレームラベル "b" として、それぞれ this.stop();を書いてあります。 "a""b"には、それぞれムービークリップが配置してあって、 今やりたいことは、"a"に配置してあるムービークリップの 2つ下(中?)の階層にあるボタンをクリックしたら、一番上の階層の"b"に移動して、 "b"に配置してあるムービークリップを表示するようにしたいのです。 "a"のムービークリップのボタンのあるフレームには、 this.stop(); button01.addEventListener(MouseEvent.CLICK,jumpB); function jumpB(event:MouseEvent):void { MovieClip(parent.parent).gotoAndStop("b"); } と書いてみましたが、 [TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。] と怒られます。 試しに MovieClip(stage).gotoAndStop("b"); とか、"b"に配置してあるムービークリップにインスタンス名"b_mc"を与えて MovieClip(parent.parent).b_mc.play(); などと苦し紛れにやってみましたが、すべて同じように怒られます。 どのようにすれば、下の階層から一番上の階層の別フレームに 移動することができますでしょうか? よろしくお願い致します。

  • 取得した変数の階層について

    どうしても解らないのでご質問させてください。 Flashで、親MC内の複数の子MCのインスタンス名から数字を取得し (product1~product9)それぞれのマウスアクションを まとめて親MC内のフレームに記述しました。 試行錯誤の末、 for (i=1; i<10; i++) { this["product"+i].Para = i; this["product"+i].onRollOver = function() { trace(this.Para); this._parent["product"+this.Para].onEnterFrame = function() { this._parent["product"+this.Para]._alpha -=this._parent["product"+this.Para]._alpha/2; }; }; } で、上手く動くようになったのですが、this.Paraを代入すると this["product"+this.Para]では動かなかったのです。 階層がthis._parentじゃないと動かないのが、謎です。 ちなみに全部ルート上において、階層を_rootのみで指定すると上手く行きました。 なぜ、親MC内だとthis._parentという指定になるのか、 知りたいです。 このままだと肝心な事が解っていないまま、なんとなくできてしまった感じなので…どうぞよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ムービークリッププロパティの変更

    こんにちは。 ムービークリップA_mcをロールオーバーした時にムービークリップB_mcを表示ロールアウトした時にムービークリップB_mcを非表示にしたいのです。 まずはムービークリップB_mcの_alphaを100にするスクリプトを記述しようとしています。 B_mcはアニメーションですでに_alpha=0でステージにおかれています。 A_mcに on(rollOver){ _root.B_mc._alpha=100; } on(rollOut){ _root.B_mc._alpha=0; } と記述したのですが、表示されませんでした。 試しにと on(rollOver){ _root.B_mc._visible=true; } on(rollOut){ _root.B_mc._visible=false; } としてもだめでした・・・ すみません。原因がよくわからず対処方法もわかりません・・・何方かご教授頂けないでしょうか? よろしくお願いします。

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

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

  • ボタンを押した時、外部swfを読み込み

    ムービークリップ内のボタン(写真のサムネイル)を押した時、外部.swf(写真やコメントを書いたswf)を読み込もうとしております。 _rootに空のムービークリップを配置し、インスタンス名を load_mcと指定。 _rootに配置したムービークリップの中に配置してあるボタンに on (release) { this._parent.load_mc.loadMovie("comment.swf"); } と書きました。しかしボタンを押してもcomment.swfが表示されません。 解決方法をお教えください。よろしくお願いいたします。

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

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

    • ベストアンサー
    • Flash
  • ムービークリップをボタンがわりに

    flash勉強中のものです。メニューを外部ファイルで作って読み込ませる感じにしています。それで、メニューの1フレーム目に各コンテンツを読み込むためのスクリプトを書き、ボタンがわりに使っているムービークリップにコンテンツを呼び出すスクリプトを書こうとしているのですが、 ボタンオブジェクトに書くときはon(release) { this.contact();   } でメニューの1フレーム目で定義したcontactメソッドを実行することができるのですが、作り込んだボタンにしたかったので後にムービークリップで作り直しました。 ここで未熟者の私はつまずいてしまったのですが、ムービークリップにon(release) { this.contact(); } と同じ動作を与えるにはどんなスクリプトを書けばよろしいのでしょうか? どうかご教授お願いいたします。

    • ベストアンサー
    • Flash
  • ムービークリップの階層の問題?

    Flash8を使っています。 質問のタイトルと内容が合致しているのかどうか不安ですが以下のようなことをしようと思っています。  ------------------ | 選択した部品を置く領域choiceMC    ------------------    =================   |  部品を閲覧する領域 buhinMC   |                     ← |  ■   ■   ■   ■   ■    →→   |  部品となるムービークリップ      左右にスクロール   |  インスタンス名はなし   ==================                                →→→次の画面へボタン 部品となるムービークリップが約100個あります。インスタンス名はつけていません。 1画面で表示できないので画面を左右にスクロールして見ることができるようにしました。それがbuhinMCです。 使いたい部品のムービークリップはchoiceMCというムービークリップ上にドラッグアンドドロップをしておきます。 ここまではできているのですが、buhinMCを左右にスクロールをするとchoiceMC上にある部品のムービークリップまでが一緒にスクロールしてしまいます。 choiceMCとヒットした部品のムービークリップは、buhinMCがスクロールした後でも、そのままchoiceMC上に置いておきたいのです。 選択した部品には以下のようなスクリプトが書いてあります。 on (press) { this.startDrag(); } on (release) { this.stopDrag(); if (_root.choiceMC.hitTest(_root._xmouse, _root._ymouse, true)) { my_x = this._x; my_y = this._y; 以下続く これで説明しきれているかどうか分かりませんがどうか教えてください。

    • ベストアンサー
    • Flash
  • ムービークリップに配置したボタンを作動させるには?

    Flash初心者のものです。 現在、FLASHで簡単な地図を作成しているのですが スクリプトを記述し、オンマウスによるスライド動作を表現したムービークリップ(インスタンス名:mc_sride)の中にボタン(インスタンス名:btn_a)を配置して、そこをクリックすると 地図の座標が移動するというような動きを実現したいのですが、 なかなかうまくいきません。 メインのムービーにボタンだけを配置した場合はうまく作動するのですが、 それを前述したムービークリップの中に配置すると そのボタンがまったく作動しないのです。 マウスが乗っても反応がありません。 相対パスはきちんと記述しているのですが・・・ どうすればうまく作動するようになるのでしょうか? ちなみにmc_srideのスライド動作のスクリプトは onClipEvent (load) { var div:Number = 0.5; var move_to:Number =730 this._x = 730; } onClipEvent (enterFrame) { this._x += (move_to-this._x)*div; } on (rollOver) { this.move_to -=100 } on (rollOut) { this.move_to +=100 } になります。 ボタンをうまく機能させる方法をご存知の方がもしいらっしゃたら、お手数ですがご指南願います。

    • ベストアンサー
    • Flash

専門家に質問してみよう