オブジェクトの重なり順を制御できないかと思っていろいろと調べてみた。

ActionScript3のオブジェクトの重なり順の考え方とAS2の重なり順の考え方が違うみたい。
AS3は、表示順。つまりaddChildされた新しいオブジェクトは、一番上に表示されて、前にaddChildされたものは、後ろに配置されてしまう。

AS2には、深度という考え方があったためにスクリプト深度を調整するみたい。
こんな感じで考え方が違うので、長くFlashをやる人は覚えてたほうがいいかもしれない。

AS3上で制御するには・・・
オブジェクトをaddChildする際に順番を考える。動的なものだったら、なるべく制御はシンプルにしたほうがいいし、できるならこっちで制御したほうがいいかも。

それとスクリプトで制御するパターンがあるみたい。
addChildしたあとで、以下のようなスクリプトを実行するみたい。
オブジェクトを最前面にする場合

container.setChildIndex(sprite, container.numChildren - 1);

オブジェクトを最背面にする場合

container.setChildIndex(sprite, 0);

ひとつ上にオブジェクトに順番を変更する場合

var index:int = container.getChildIndex(sprite);
if (index + 1 < container.numChildren) {
container.swapChildren(sprite, container.getChildAt(index + 1));
}

ひとつしたにオブジェクトに順番を変更する場合

var index:int = container.getChildIndex(sprite);
if (index - 1 >= 0) {
container.swapChildren(sprite, container.getChildAt(index - 1));
}

という風にするみたい。
この内容は、Adobe Flashクイックスタート:ActionScript 3.0を使用したプログラミングにも掲載されている。

関連記事