• ベストアンサー

表示順を変更したいのですが、、

ボタンAとボタンBが重なったときに、ある場合はボタンAが上に、ある場合はボタンBを上に表示したいのですが、どうすれば良いでしょうか。 また、レイヤーごと表示順序を変更する方法はあるでしょうか?

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

ムービークリップならできます。 ボタンA も ボタンB もムービークリップで作成します。 または, ボタンA も ボタンB もそれぞれ別のムービークリップの中に入れます。 そして, MovieClip.swapDepths() を使えば深度を入れ替えることができます。 たとえば, _root(メインムービーのステージ上)に2つのムービークリップがあったとします。 一方に「A_mc」,もう一方に「B_mc」というインスタンス名を付けたとしておきます。  _root   ├ A_mc   └ B_mc --------- 「A_mc」に次のように書くと,「A_mc」にロールオーバーしたとき「B_mc」と深度が入れ替わります。 どっちが上にあるとか下にあるとかは関係なく,とにかく深度が入れ替わります。 on (rollOver) { this.swapDepths(_root.B_mc); } 「B_mc」に次のように書くと,「B_mc」にロールオーバーしたとき「A_mc」と深度が入れ替わります。 これもどっちが上にあるとか下にあるとかは関係なく,とにかく深度が入れ替わります。 on (rollOver) { this.swapDepths(_root.A_mc); } --------- 「A_mc」に次のように書くと,「A_mc」にロールオーバーしたとき深度0と入れ替わります。 これによって「B_mc」より上に表示されます。 on (rollOver) { this.swapDepths(0); } 「B_mc」に次のように書くと,「B_mc」にロールオーバーしたとき深度0と入れ替わります。 これによって「A_mc」より上に表示されます。 on (rollOver) { this.swapDepths(0); } --------- Flash や ActionScript のバージョンを書かれていらっしゃいませんが。 上のようにムービークリップ自体に on() イベントハンドラ を書いて, その中で MovieClip.swapDepths() メソッドが使えるのは, Flash MX 以上で,ActionScript1.0 or 2.0 のみです。 (Flash MX以上とは,MX,MX2004,8,CS3 のことです。) MovieClip.swapDepths() メソッド自体は,Flash 5 でも使用できます。 ただし, on() イベントハンドラ はボタンにしか書けませんから, ムービークリップの中にボタンを入れる必要があります。 また上のスクリプトでは使用しませんでしたが, FlashMX2004以上 では, MovieClip.getNextHighestDepth メソッド で, そのムービークリップがある最高深度のさらに1つ上の深度を得ることができます。 これを使うとムービークリップをその時の最上深度に持っていくようなこともできます。 (getNextHighestDepth は使わなくてもできますけどね,これを使うと簡単にできますということです。) ◎ ちょっと補足 ---深度について--- 深度はオブジェクトの上下関係です。 ムービークリップに指定できる深度の範囲は -16384 から 1048575 までの整数です。 深度の数値が大きいものほど,上(手前)に表示されます。 レイヤー上に手動配置したものは, 深度 -16384 ~ -1 までの範囲で, 下から(-16384から)順にだいたい詰めて自動的に深度が割り振られます。 手動では深度 0 以上に何かを配置することはできません。 深度0 ~ 1048575 までの範囲は, ActionScriptによってのみムービークリップなどを配置できます。 したがって, 深度 0 未満の範囲では手動もしくはActionScriptで物を配置でき, 深度 0 以上の範囲は,ActionScriptのみで物を配置できるということになります。 swapDepths の場合は, 深度を入れ替えるのでActionScriptを使用して操作してもかまいませんが, attachMovie() や,createEmptyMovieClip() などによって, 新たに何かをステージ上に配置する場合は, 深度 0 以上に配置するのが原則となっています。 同じ深度に重複してムービークリップなどを配置すると, 前にその深度にあったものの居場所がなくなって消えてしまうからです。 手動で配置したものの深度は自動で割り振られるので, 普通は把握・管理していないはずです。 何も考えずに深度 0 未満に何かを作成すると, あるべきはずものが消えてしまうおそれがあります。 ================== > レイヤーごと表示順序を変更する方法はあるでしょうか? FLAファイルであるうちはできます。 しかしSWF にパブリッシュした後は, レイヤーはオブジェクトではないので順序を変えることはできません。 逆ですよ。 レイヤーは深度のようなもので,喩えるなら「標高」です。 太郎君が標高 100m の山の中腹にいて, 花子さんが標高 200m の山の山頂にいたとします。        花子 標高200…山頂      太郎 標高100…中腹  _平地 標高0…山麓 太郎君と花子さんの上下を入れ替えたい場合, 標高は変えませんよね。 「山の中腹の標高を 200m にして,山頂の標高を 100m にする。」 いったいそれはどんなことか想像もできませんし, 普通は,そんな妙なことをしようとは考えないと思います。 太郎君と花子さんの上下を入れ替えたいのでしたら, 標高を入れ替えるのではなくて, 太郎君を標高 200m の山頂につれて行って, 花子さんを標高 100m の中腹に戻します。 レイヤーを変えることはできませんが, レイヤーに乗っているものの深度は入れ替えられます。 具体的には, 1つのレイヤーに乗っているものをムービークリップで作成して, 最初に書いたように swapDepths すればできます。 もし, 1つのレイヤーでモーショントゥイーンを作成しているとすれば, そのモーショントゥイーンごと1つのムービークリップの中に作成してしまうとできます。

pokapoka1980
質問者

お礼

ムービークリップにしたらできました。 ありがとうございました。 返信、大変感謝です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • photoshopCS5 レイヤーの重ね順変更

    photoshopCS5使用です。レイヤーの重ね順の変更について質問です。 レイヤーパレットから移動したいレイヤーを選択し、任意の場所に上下移動しているのですが、レイヤー数が多い場合、レイヤーパレットが長くて、場所が分からなくなったり、移動に手間取ってしまうのですが、簡単な移動の仕方があれば教えてください。 例えばFireworksで画像Zを画像Aの上に乗せたい場合、画像Zを選択し、切り取って、画像Aを選択し、貼り付ければ、レイヤーパレットで画像Aの上だか下に画像Zが移動できます。 photoshopでそういう方法はありますか? よろしくお願いします。

  • CADに取り込んだtif画像の表示順序の変更

     質問します。よろしくお願いします。  CADの図面にtif画像を数枚取り込みました。 取り込んだ画像の重なり順序を変更したいのですが,方法はあるでしょうか?  今,1番初めに取り込んだ画像Aが一番下に表示されており,後から取り込んだ画像Bが画像Aの上にのっかている状態です。(画像Aは上の画像Bで見えなくなっている) この画像AとBの重なり順序を入れ替えたいです。 画像Aを画像Bの上に持ってくるにはどうすれば良いでしょうか?  使用しているマシンは,AutoCAD LT 2000i です。

  • フレームの表示順について。

    <FRAMESET ...>   <FRAME name="a" src="a.aspx" ...>   <FRAME name="b" src="b.aspx" ...> </FRAMESET> a はボタンなどの貼り付いたコントロール部分を表示するページ。 b は帳票を表示するページ。 b が完全にロードされたことが完了した後に、a がロードされるようにして、a 上のボタンを初めて押せるようになるようにしたいのですが、 HTMLレベルでフレームの表示順を設定することは不可能なのでしょうか???

    • ベストアンサー
    • HTML
  • エクセル関数で条件にあった数を上から順に合計表示

    教えてください。 Aの列に番号、Bに数量が入った表があります。 番号はいくつかあり、順序はバラバラです。   A   B   1   200   5   150   3   50   1   150   5   300 同じ番号の合計をC列に表示したいのですが、=SUMIF(A1:A5,A1,B1:B5)のフィルですと   A   B    C   1   200  350   5   150  450   3   50   50   1   150  350    5   300  450 となります。こうではなく、  A   B    C   1   200  200   5   150  150   3   50   50   1   150  350    5   300  450 というように上から順におなじ番号の数が加算されて表示させる方法はありますか? 表は番号と数が追加されていきます。 そうすると上の方法ですと、同じ番号の合計が全て変化してしまいます。 そうではなく、追加される前の合計を残したいということです。 よろしくお願いいたします。

  • FLASHのボタン表示について

    FLASHのロールオーバ時の各ボタン表示について質問があります。 今FLASHでメニュを作成していまして、下記ボタンを作成しました。 1.ボタンA 2.ボタンB 通常時の背景は1枚の写真です。 ここで、1.ボタンAを押すと(ロールオーバー時)背景を 写真A(背景を隠した全体表示)にして、 同じく2.ボタンBを押すと背景を写真Bにするボタンを作成しました。 各ロールオーバー時に背景は希望の写真背景に変わります。 しかし各ボタン表示が 1.ボタンAをを押すと2.ボタンBは表示 2.ボタンBを押すと1.ボタンAをが消える これは、ボタンのレイヤーでのどちらが前面かで変わることが分かりました。 ここで希望としては、1を押しても(ロールオーバ時)2のボタンが表示され、 2を押しても(ロールオーバ時)1のボタンが表示されるようにしたいのですが、 この場合どうすれば宜しいのですか? ボタンの表示優先(レイヤー前面か後面)がある限り無理なのでしょうか? ボタンのロールオーバ時のボタン表示について分かる方、教えてほしいのですが、お願いします。

  • データベースの登録順序を簡単に変更する方法ありませんか?

    お世話になっております。 現在、ユーザの管理をMySQLで行っております。 テーブルに、A,B,Cという、3人のデータが入っています。 ここに、Dというユーザを登録すると、 ふつうに登録順にA,B,C,Dとなるのですが、 この順番を、A,D,B,Cのようにあとから順序を変更したいのですが、どうすればいいのでしょうか。 (このテーブルを読み込んで、ユーザをHP上でセレクトボックスとして表示させている。) 理想は、リストボックスみたいなものに、A,B,C,Dを表示させ、その隣に「↑ボタン」と、「↓ボタン」を配置し、リストボックスのユーザ「D」を選択し、「↑ボタン」でユーザ「B」のひとつ上にユーザ「D」を持って行き、「登録ボタン」にて、データベースをアップデートしたいと思います。(あくまで理想なんですが・・・) すみませんが、ぜひ、ご協力おねがいします!!!

    • ベストアンサー
    • MySQL
  • visual basic ラベル等の表示順序(最前面に表示する)の変更について

    修士論文の研究結果を反映させるプログラムを作るために、最近visual basicを勉強し始めて、ただ今プログラムを作成中なのですが、 labelやtextboxを表示させる順序の変更ができずに困っています。 具体的に言うと、 ボタン1を押すとラベル1が表示される ボタン2を押すとラベル2が表示される ・ ・ ・ といった内容なのです。それで、それぞれのラベルを少しずらした状態で重ねて表示して、最後に呼び出したラベル等を最前面に表示したのですが、どうしても登録した順にしか表示されません。 (例えば、ボタン1→ラベル1、ボタン2→ラベル2とした場合で、フォームにラベル1をまず作成し、次にラベル2をその上に少しずらして作成したとします、そうした場合にボタン2の処理をした後にボタン1の処理を行うと、ラベル1がラベル2の下に隠れてしまいます。) そこで、最後に操作したボタンの処理で表示されるラベルを最前面に表示する、 もしくは、ラベルをクリックすると最前面に表示させたとした場合には、どのようなプログラムを書けばよいのでしょうか? 上手くまとまっていなくてすみません。 修論の提出が来月半ばと少し焦っています。 どうぞ宜しくお願いいたします。

  • エクセル ハイパーリンク先でのボタンの表示/非表示

    こんばんは。 エクセルでのボタンの表示/非表示についての質問です。 シートA、B、C、があり、AのシートにもBのシートにもCのシートへジャンプするハイパーリンクが設定してあります。 シートCにAボタン、Bボタンがあり、ジャンプしてきたシートによってボタンを表示/非表示にしたいと考えています。 【Aシートからジャンプして来た場合】 Cシート:Aボタンは表示、Bボタンは非表示 【Bシートからジャンプして来た場合】 Cシート:Aボタンは非表示、Bボタンは表示 これができる方法を模索中です。 どうぞよろしくお願い致します。

  • outlook2002 アドレスの表示順変更について

    outlook2002を使用しています。 初心者です。 メールアドレス検索時の「名前を表示するアドレス一覧」に、個人用アドレス帳や、LDAP、ExchangeServerのアドレス帳(グローバルアドレス一覧)等、複数表示されるように設定しています。 「名前を表示するアドレス一覧」を開いた時の表示順序を変更したいのですが、どうすればいいでしょうか? どなたか教えてください。

  • レイヤーの元位置をくずさずに別レイヤーへコピー

    Photoshop Elements 2.0で次のようなことをしたいのですが、うまく行う方法がわかりません。 フォトショップの使い方を解説しているサイトをいくつか見たのですが、解決できませんでした。 どなたか心得のおありの方がいらっしゃいましたら、ご教示いただければ幸いです。 【やりたいこと】 画像の大きさがいずれも600×800ピクセルの、背景画像とA.pngとB.pngがある。 A.pngとB.pngにはレイヤーがのっており、このレイヤーがある位置を動かすことなく、背景画像と統合したい。 【試したこと・詰まった点】  (1)背景画像の上にA.pngとB.pngを持ってくる  →持ってくるだけなら移動ツール(V)でできるが、それぞれのレイヤーがあった位置に持ってくることが難しい(目分量頼みになってしまう)。 (2)A.pngとB.pngの上に背景画像を持ってきて順序を入れ替える  →A.pngの上に背景画像を持ってくればAのレイヤーは動かさずにすむが、Bのレイヤーと同時にできない。 【こういうことができれば解決できる、と考えたこと】 ・AやBのレイヤーがある位置を記憶させる(そういう機能があれば) ・AやBのレイヤーがある位置を調べて、それを背景画像の上で再現する(左上隅から何ピクセルの位置にあるか、など) ・AやBのレイヤーの大きさを、画像の大きさ600×800ピクセルにあわせる(それぞれの透明な背景と統合する、など) ここにあげた以外の方法でもかまいませんので、何か手立てがありましたらぜひ教えてください。 よろしくお願いします。