ActionScript 2 でインスタンスの深度(重なり順)管理に使える関数は swapDepths, getDepth
と限られている。
インスタンスを最前面にするには最前面のインスタンスを変数に保持し swapDepths
させる。
そのつど getDepth
を使って各インスタンスの深度を走査し最前面のインスタンスと swapDepths
させる。
どちらにせよ深度を変えるのに使えるのは swapDepths
なので、深度を交換することしかできません。
単純に深度を変更(最前面)し他のインスタンスの深度を変更したくない時はかなり面倒くさい処理を挟まないといけなくなります。
Adobe(当時はMacromedia)開発チームもそれは承知していたようでコンポーネントように便利なクラスを開発してくれています。
import mx.behaviors.DepthControl; // 再背面 DepthControl.sendToBack(target:MovieClip); // 最前面 DepthControl.bringToFront(target:MovieClip); // 深度を1段階低く DepthControl.sendBackward(target:MovieClip); // 深度を1段階高く DepthControl.bringForward(target:MovieClip); |
関数内部では走査処理が走っているのでインスタンスの数が多くなると当然フレームレートは落ちてしまいます。
めんどうなことはクラス内部で全部処理してくれるので便利に使えます。