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 - コメント3件