- ベストアンサー
深度を最前面にしたいが?
いつも、ありがとうございます。 同じタイムライン上にボタンを配置して、ロールオーバーでボタンのグラフィックが変わるムービーを作っています。 単純にボタンのアップとオーバーに違うグラフィックを入れて、12のボタンを配置しました。しかしエリアが狭いので、ロールオーバーでグラフィックが大きくなった時に重なってしまいます。 そこで、ロールオーバーしたらそのボタンを最前面にするために以下のようなスクリプトをボタンに入れたのですが、うまくいきません。 on (rollOver) { bu_01.swapDepths(999); } よろしく、お願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
swapDepths は MovieClip.swapDepths 。 MovieClip クラスのメソッド です。 ボタンシンボルは対象物(オブジェクト)として使えません。 ボタンに書くのは良いですけど,ボタンシンボル自体を対象にはできないということです。 ボタンはムービークリップで自作するのが良いのではないでしょうか。 FlashMX以降では,onマウスイベント が使えるので。 まず,ボタンの普通の状態(ボタンのアップ状態)の絵を用意してムービークリップシンボルに変換します。 そのムービークリップシンボルをダブルクリックして,ムービークリップ内のタイムラインの編集に移ります。 ムービークリップ内のタイムラインを,2フレームにして,フレーム2をキーフレームにします。 そのフレーム2の方には大きくなった状態(ロールオーバー状態)の絵を描くか置くかします。 そして,作ったボタン(と言いつつムービークリップ)には -------------------------- onClipEvent (load) { this.stop(); } on (rollOver) { this.swapDepths(999); this.gotoAndStop(2); } on (rollOut, dragOut) { this.gotoAndStop(1); } -------------------------- と書きます。 this という相対パスを使っているので, 12個あるどのボタン(と言いつつムービークリップ)も,同じスクリプトで行けます。 あと,ボタンと同じように, ------------------------- on (release) { //ココにスクリプト } ------------------------- を付け加えて,何か動作させても良いです。 ただし,ボタンオブジェクトと違って,階層が変わりますのでパスには注意が必要です。 this.swapDepths(999); の 999 ですが, 他に何もなければ,別に 1 でもかまわないと思います。 =========================== また,12個のボタンは重なると言っても,せいぜい隣のボタンですよね。 2つしか重なりません。 だから,上のように深度を 999 とかいう一定の数にしておいてもかまいません。 でも, 3つ以上の重なりが発生して,常にロールオーバーしたもの順に上に表示したい場合は タイムラインに,次のように変数を用意しておいて, ------------------------- dps = 0; ------------------------- ボタン(と言いつつムービークリップ)には,以下に書くと自然に見えます。 ------------------------- onClipEvent (load) { this.stop(); } on (rollOver) { this.swapDepths(_root.dps); _root.dps++; this.gotoAndStop(2); } on (rollOut, dragOut) { this.gotoAndStop(1); } ------------------------- 深度を 999 とかいう一定の数にしておくと, 1回目のロールオーバーでは,すなおに999に行ってくれますが, 2つめ以降は,最初の999のムービーと深度が入れ替わります。 すると他のものの深度がうまくコントロールできなくなるので, 上のように変数を加算して,ロールオーバーした物の深度を常に上に上に持っていく方が良い場合もあります。
お礼
詳しい解説をありがとうございました。 実は、MovieClip クラスのメソッドに気づいてボタンをムービークリップで 入れ子にしてムービークリップにスクリプトを入れ、この問題を回避ました。 ですが、その後ボタンの中のシンボルをムービークリップにして動きをつける 必要が出て来てさらに入れ子にという状態に。 はじめから、ムービークリップでボタンを作っていればすっきりでしたね。 ありがとうございます。たいへん、参考になりました。