mx.behaviors.DepthControl クラス
Flash MX 2004のころからビヘイビアに入っているのに、なぜかFlash8になってもヘルプに書かれていないムービークリップの深度を入れ替えたりできるクラス。
GoogleやYahooで検索しても、あまりヒットしないので書いてみる。
例: test_mc の重ね順を変更するには↓
このクラスを使ってちょっと注意が必要なのが、このクラスは「存在しているムービークリップ同士を swapDepths で入れ替えている」みたいなので、ひとつのムービークリップの深度を変えると、他のムービークリップの深度まで変わります。
でもこれは、「後ろに並んでいた人が前に割り込めば、それまで並んでいた人はひとつずつ後ろに下がる」と一緒で動作としては理解できますが、問題は「ムービークリップ同士の深度しか入れ替わらない」ということです。
ムービークリップの間にテキストフィールドなどが重なって配置されている場合、テキストフィールドの順番は変わってくれないのです。これはちょっと問題かも...。
テキストフィールドやボタンにも深度があるのに、なんでムービークリップにしか swapDepths がないんだ?
まぁ、ムービークリップだけで深度を入れ替えるなら問題なさそうなので、ガードゲームなどを作るときには充分使えそうです。
【追記】
ActionScript 3.0 の場合
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件