yoshiweb.NET

mx.behaviors.DepthControl クラス

Flash MX 2004のころからビヘイビアに入っているのに、なぜかFlash8になってもヘルプに書かれていないムービークリップの深度を入れ替えたりできるクラス。
GoogleやYahooで検索しても、あまりヒットしないので書いてみる。

例: test_mc の重ね順を変更するには↓// ひとつ前面に配置
mx.behaviors.DepthControl.bringForward(test_mc);

// ひとつ背面に配置
mx.behaviors.DepthControl.sendBackward(test_mc);

// 最前面に配置
mx.behaviors.DepthControl.bringToFront(test_mc);

// 最背面に配置
mx.behaviors.DepthControl.sendToBack(test_mc);


このクラスを使ってちょっと注意が必要なのが、このクラスは「存在しているムービークリップ同士を swapDepths で入れ替えている」みたいなので、ひとつのムービークリップの深度を変えると、他のムービークリップの深度まで変わります。

でもこれは、「後ろに並んでいた人が前に割り込めば、それまで並んでいた人はひとつずつ後ろに下がる」と一緒で動作としては理解できますが、問題は「ムービークリップ同士の深度しか入れ替わらない」ということです。
ムービークリップの間にテキストフィールドなどが重なって配置されている場合、テキストフィールドの順番は変わってくれないのです。これはちょっと問題かも...。
テキストフィールドやボタンにも深度があるのに、なんでムービークリップにしか swapDepths がないんだ?

まぁ、ムービークリップだけで深度を入れ替えるなら問題なさそうなので、ガードゲームなどを作るときには充分使えそうです。

【追記】
ActionScript 3.0 の場合
// 最前面に表示
this.setChildIndex ( mc, this.numChildren - 1 );
投稿日 : 2005年12月10日 - yoshiweb - カテゴリ: ActionScript

コメント

投稿者 : niea

ども~
わぁ…yoshiwebさんと同じ事かんがえてた!
昨日、ジャバスクリプトで、フラッシュの右クリックの表示を変更するものをゲットして、サブメニューの表示の並びを変えたいなぁと思い、Flashのヘルプを見ていて、ふと思ったんです。「swapDepthsしかない…」でも、前に作ったサイトではポップアップウィンドーのDepthを簡単に入れ替えていたんで、調べてみると、やっぱりビヘイビアでした。この頃はさっぱりビヘイビア使っていなかったんで、あせりました…
yoshiwebさんと同じような所に同じくらいの時間で疑問抱けて光栄です(マテ
僕なんかに光栄に思われても嬉しくないですよね^^;
本当に、こういうところ不親切ですよね~
2005年12月11日 09時33分19秒

投稿者 : niea

すみません…
△並び
○順番
並びでも通じそう…^^;
2005年12月11日 09時35分57秒

投稿者 : yoshiweb

> 僕なんかに光栄に思われても嬉しくないですよね^^;
そんなことありませんよ。ありがとうございます。ちなみに自分が分からないから検索したんじゃなくて、誰かが既に書いてたら書く意味がないかな?と思って検索してみただけです。間違ったことを書いている場合は指摘してください。
2005年12月12日 08時15分45秒