- ベストアンサー
3つのMCが全てクリックされたかどうかの判断
3つのMCが全てクリックされたかどうかを判断し、全てクリックされた時点でボタンを表示したいです。 アドバイスよろしくお願いします。(環境はFlash8です)
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1の方の考え方と半分(3/4くらい)かぶってしまいましたが, 「ムービークリップ(MC) をクリックしたときに _root に1本のフラグ(旗)を立てて, 3本のフラグが立ったときのみ,ボタンを表示させる。」 という考え方ではどうでしょうか。 それだけでもいろいろスクリプトの書き方はできますが, 下記は一例です。 まず, ボタンとムービークリップにインスタンス名を付けます。 この説明では, ボタンに 「my_btn」 というインスタンス名を付けることにします。 そして, 3つのムービークリップにはそれぞれ, 「my_mc0」,「my_mc1」,「my_mc2」というインスタンス名を付けることにします。 そして, 1つボタンと3つのムービークリップをステージ上に配置して, それらが存在するフレームに, フレームのスクリプトとして次のように書きます。 ------------------------------------------ // フラグ flag0 ~ 2 の初期値を 0 にする flag0 = flag1=flag2=0; // // ボタン my_btn を非表示にする _root.my_btn._visible = false; // for (var i = 0; i<=2; i++) { // 各ムービークリップの変数 my_num を指定 _root["my_mc"+i].my_num = i; // 各ムービークリップクリック時の動作を定義 _root["my_mc"+i].onRelease = function() { _root["flag"+this.my_num] = 1; // _root の flag0 ~ 2 が全て 1 であれば if (_root.flag0 == 1 && _root.flag1 == 1 && _root.flag2 == 1) { // _root の ボタン my_btn を表示 _root.my_btn._visible = true; } }; } ------------------------------------------ これで,一応できあがりです。 ============================================ 上では,まとめてフレームに書いていますが, ムービークリップが3つ程度でしたら, 各ムービークリップにそれぞれ on(release){ } を書いても良いと思います。 例えば次のように↓。 フレームのスクリプト ------------------------------------------ // フラグ flag0 ~ 2 の初期値を 0 にする flag0 = flag1=flag2=0; // // ボタン my_btn を非表示にする _root.my_btn._visible = false; ------------------------------------------ ムービークリップ my_mc0 のスクリプト ------------------------------------------ on (release) { _root.flag0 = 1; // _root の flag0 ~ 2 が全て 1 であれば if (_root.flag0 == 1 && _root.flag1 == 1 && _root.flag2 == 1) { // _root の ボタン my_btn を表示 _root.my_btn._visible = true; } } ------------------------------------------ ムービークリップ my_mc1 のスクリプトは, _root.flag0 = 1; を _root.flag1 = 1; に変更するだけです。 ムービークリップ my_mc2 のスクリプトは, _root.flag0 = 1; を _root.flag2 = 1; に変更するだけです。 また,各ムービークリップにon(release){ } を書く場合は, ムービークリップのインスタンス名は特に必要ありません。 二重線 ==== より上も下も同じ事です。 使いやすい方を使ってください。 また,上記は一例です。 様々な書き方ができるので, 「ムービークリップ(MC) をクリックしたときに 1本のフラグ(旗)を立てて, 3本のフラグが立ったときのみ,ボタンを表示させる。」 というものを, 自分なりに コーディング(プログラムコード化) してみても良いですね。
その他の回答 (1)
ボタンのオブジェクトに監視用のフラグになる値を設定してMCがクリックされたらMCがボタンにイベントを渡してボタン内のフラグON その時に他の値も調べて3つともONならvisibleにする という原理でどうだろう
お礼
SAYKAさん、早速の回答ありがとうございました。 フラグか変数を活用すればとは思っていたのですが、 これで考えがまとまりました。 またアドバイスよろしくお願いします。
お礼
sassakunさん、丁寧な回答ありがとうございました。 考え方だけでなく、サンプルコードを乗せてくださったので 初心者の私にもスムーズに理解することができました。 また、複数の考え方を教えていただけて幅が広がりました。 本当にありがとうございました。