• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MCの重なり順)

MCの重なり順に関する問題と解決方法

このQ&Aのポイント
  • FlashMXで作成している際に、ボールのアニメーションを配置する際に背景が重なってしまう問題が発生しています。
  • 背景をMCにして色を変える方法を応用しているが、ボールが重なって見えなくなることが問題となっています。
  • 背景をMCにしない方法や深度に関する対処方法について教えていただきたいです。

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

背景の色を setRGB で変えたいだけでしたら、背景用のムービークリップは1つあれば充分だと思います。 attachMovie で動的に挿入するのではなく、1番下のレイヤーに背景用のムービークリップを予め配置しておき、「背景」ボタンが押された時の処理は、背景の色を変えるのみにしてはいかがでしょうか。 オブジェクトの深度は -16384 から 1048575 の範囲で、数値が大きいほど上に重なって表示されます。 ステージに配置したオブジェクトに関しては、レイヤーの重なり順や、レイヤー内での各オブジェクトの重なり順によって、-16383 から(最下層である -16384 は _root が占有します)順に深度が割り当てられます。 つまり、1番下のレイヤーを背景専用にして背景のムービークリップを配置しておくと、このムービークリップの深度は -16383 になり、_root 以外のオブジェクトとしては最も下に表示されます。 attachMovie の第3引数では、挿入するインスタンスの深度を指定できます。 理論的には、ボールの深度が背景の深度 -16383 より上であれば、背景より上に表示されることになります。 しかし、-16383 近辺の深度は、ステージに配置したカラーバーなどの他のオブジェクトが既に占有している可能性があります。 動的にインスタンスを挿入する場合、他のインスタンスに割り当てられている深度を指定すると、既存のインスタンスが新しく挿入したインスタンスに置き換えられてしまいます。 attachMoviie や duplicateMovieClip で動的にインスタンスを挿入する時は、通常は0以上の深度を指定しておけば、深度の衝突はまず起こりません。 なお、深度は連番になっている必要はないので、0で不安なら 100 でも 1000 でも構いません。とにかく、他のオブジェクトが占有していない深度を割り当てておけば大丈夫です。 あえて背景を動的に挿入する場合でも、attachMovie の第3引数を工夫すれば何とかなります。 例えば、背景を挿入する場合は第3引数に0を、ボールを挿入する場合は 100 以上を指定すると、ボールは背景より上に配置されます。 ただし、ステージに最初から配置されているカラーバー等の深度は、先述の通り負の深度の方から順に割り当てられるため、深度0として配置した背景よりも下になります。 もっとも、背景とカラーバーが重なっていないデザインならば、カラーバーの深度が背景より小さくても、特に問題はありませんが。 getDepth で深度を取得し、swapDepths で深度を入れ替えて重なり順を変更する方法もありますが、複数のムービークリップの深度をあれこれいじるより、最初から背景が1番下になるように配置しておいた方が簡単だと思います。

POsCAM
質問者

お礼

DPEさん、どうもありがとうございます!! ご指摘どおり、背景用のムービークリップを配置して、 setRGBで変更する方法で試したらすんなりうまくいきました!! 自分でも何故attachMovieにこだわっていたのかわからなくなりました(笑) 深度に関しては分からないことだらけだったのですが、 DPEさんの説明でだいぶ理解できました。 深度=レイヤーのようなもの、と思っていたんですが全く違うんですね。 すごくためになりました!! attachMovieの第3引数を工夫する、という方法もこれから役に立ちそうです。 ありがとうございました!!!

関連するQ&A