- 締切済み
ムービークリップの下のボタンリンクが反映され困っています
初めてムービークリップを使ったFLASHを作っています。 地図を作っていて、ポイント密集部をムービークリップで拡大し、拡大された地図のポイントをボタンでリンクしています。 また密集地以外のポイントはボタンのみのリンクをしています。 その時に、最上段のムービークリップに隠れて見えない他のムービークリップやボタンのリンクが出来てしまいます(指ポインタが出る) これが表れないようにしたいのですがどのようにすれば良いのでしょうか? 分かりやすく教えて頂けたら幸いです。 よろしくお願いします。 Mac MX2008pro
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- BlurFiltan
- ベストアンサー率91% (1611/1754)
(以下 MX2008 ではなく MX2004 だと解釈して回答します。) > 最上段のムービークリップに隠れて見えない > 他のムービークリップやボタンのリンクが出来て > しまいます(指ポインタが出る) これには色々な対処法があります。 一般的には下に隠れて見えないボタンの enabled プロパティ(ボタン能力プロパティ) を false にするのが普通かもしれません。 仮に, 下に隠れて見えないボタンが _root にあって, インスタンス名が 「_btn0」~「_btn2」 であったとすると, 最上段のムービークリップを出没させるとともにそのタイミングで, _root._btn0.enabled = false; _root._btn1.enabled = false; _root._btn2.enabled = false; を実行させるとか, 上のスクリプトの書き方を変えて, // 変数 i を 0~2 で変動させながらループ for (i=0; i<=2; i++) { // ボタン _btn0~1 のボタン能力をfalse(無効)にする _root["_btn"+i].enabled = false; } にするとかです。 ボタンが完全に隠れて見えないのでしたら見えなくて良いわけですから, enabled (ボタン能力)だけをfalseにするのではなくて, _visible プロパティ(可視プロパティ)をfalse(不可視)にしても良いと思います。 _root._btn0._visible = false; _root._btn1._visible = false; _root._btn2._visible = false; または, // 変数 i を 0~2 で変動させながらループ for (i=0; i<=2; i++) { // ボタン _btn0~1 の可視不可視をfalse(不可視)にする _root["_btn"+i]._visible = false; } などです。 また,ご質問の意図とは違うと思いますが, 単に「指ポインタが出る」ことだけが困る場合は, _root._btn0.useHandCursor = false; _root._btn1.useHandCursor = false; _root._btn2.useHandCursor = false; のように useHandCursor プロパティを false にすることによって, ハンドカーソル になるのだけを阻止する方法もあります。 ただし, これは ハンドカーソル にならないだけでボタンのスクリプトは機能します。 ご質問で意図するものとは違うと思いますが参考までにという意味で書きました。 ※これは例えば隠しリンクボタン(例:脱出ゲーム)などに使用したり, on(rollOut) を単に検知したいだけのときなどに使うものです。 最初に 「これには色々な対処法があります。」 と書きましたが, 上のように考えるとその方法はバリエーションまで含めるとたくさん見つかると思います。 拡大地図のムービークリップを表示させるタイミングで, _root をフレーム2に gootoAndStop(2) させて, そのフレーム2には, 隠れて見えなくなるボタンを配置しないようにする。 拡大地図のムービークリップを表示させるタイミングで, 隠れて見えなくなるボタンの座標を, _root._btn0._x = -100000; のようなとんでもない座標に移動させる。 隠れて見えなくなるボタンをムービークリップに入れて, 拡大地図のムービークリップを表示させるタイミングで, 見えなくなるボタン入りムービークリップごと removeMovieClip(ムービークリップ削除)をする。 (※だだしその前に深度0以上にしておく必要あり。) 拡大地図のムービークリップの一番下のレイヤーに 透明な大きなボタンでも作成する。 (上にあるボタンほど優先で下のボタンが効かなくなる性質を利用) (ただしデメリットは拡大地図上で常に指ポインタが出ること) (不恰好で原始的な方法のようだが使用されている物はよく見る) などなど…。 方法やそのバリエーションはたくさんありますが, その場に応じて対処法は変えます。 ////////////////////////////////////////////////////////// 最初に書きました, 「下に隠れて見えないボタンの enabled プロパティ(ボタン能力プロパティ) を false にする」 という方法の具体的な例を書きます。 ムービーの フレーム1 の階層構造が次のような感じになっているとします。 以降の MC はムービークリップの略です。 また enlarged_map_mc や _btn0 や congested_area_mc は ボタンやMCそれぞれのインスタンス名です。 _root ├ enlarged_map_mc(拡大地図MC) │ ├ _btn0(ボタン) │ ├ _btn1(ボタン) │ ├ _btn2(ボタン) │ ├ _btn3(ボタン) │ └ ---地図などの画像--- │ ├ congested_area_mc(密集地域MC) │ (↑密集地域上に配置する透明な塗りなどのボタンかMC) │ (↑つまり拡大地図を表示させるためのボタンまたはMC) │ ├ _btn0(ボタン) ├ _btn1(ボタン) ├ _btn2(ボタン) └ ---地図などの画像--- _root の フレーム1 に書くスクリプト例↓。 ------------------------------------------ // 拡大地図MCの可視プロパティをfalse(不可視)にしておく _root.enlarged_map_mc._visible = false; // 密集地域MC をクリックしたときの動作を定義 _root.congested_area_mc.onRelease = function() { // // 拡大地図MCの可視プロパティをtrue(可視)にする _root.enlarged_map_mc._visible = true; // // 変数 i を 0~2 で変動させながらループ for (i=0; i<=2; i++) { // ボタン _btn0~1 のボタン能力をfalse(無効)にする _root["_btn"+i].enabled = false; } // // この(密集地域MCの)ボタン能力をfalse(無効)にする this.enabled = false; }; // 変数 i を 0~3 で変動させながらループ for (i=0; i<=3; i++) { // // 拡大地図MC内の _btn0~3 をクリックしたときの動作を定義 _root.enlarged_map_mc["_btn"+i].onRelease = function() { // // 変数 i を 0~2 で変動させながらループ for (i=0; i<=2; i++) { // ボタン _btn0~1 のボタン能力をtrue(有効)にする _root["_btn"+i].enabled = true; } // // 密集地域MCのボタン能力をtrue(有効)にする _root.congested_area_mc.enabled = true; // // 親(拡大地図MC)の可視プロパティをfalse(不可視)にする this._parent._visible = false; }; } ------------------------------------------