multimedia design, Actionscript, Lingo, PHP, Perl, SQL
12月
13
Post

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);

関数内部では走査処理が走っているのでインスタンスの数が多くなると当然フレームレートは落ちてしまいます。
めんどうなことはクラス内部で全部処理してくれるので便利に使えます。

Bookmark and Share

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> <pre lang="" line="" escaped="">