2010年5月16日日曜日

ActionScript | 表示オブジェクトの重なり順序

最後まで放っておいた部分をいよいよ手を入れてみました。
それは表示オブジェクトの重なり順序です。
表示オブジェクトの重なり順序の制御の詳しい方法はWeb上でいくらでも見つかるのでそちらを参照すればすぐにわかります。

が、実際に使う際の便利な方法について考えてみました。
表示オブジェクトとは言っても、いろいろな目的が混じった表示オブジェクトが数百個あるようなときに、その順序をいちいち考えてソートするのは非常に面倒です。

たとえばアプリ上には固定のツールボックスやダイアログ、操作中のオブジェクトのグラフィックがあるかもしれません。
そして操作中のオブジェクトはツールボックスの上には表示されないとか、ダイアログは何にも増して一番手前に表示したいとかいった基本的な順番があるでしょう。

そのような場合はカテゴリごとにスプライトを作成し、そこにaddChildしていくといった手法で階層立てることで基本的な順番を維持することができました。
ただこの方法はstageにaddChildするよりも描画が遅くなったような気がします。

たとえば以下のように構成すると、
dialog (Sprite)
  |->alertDialog (Sprite)
  |->selectDialog (Sprite)
toolBox (Sprite)
  |->button1 (Sprite)
  |->button2 (Sprite)
  |->button3 (Sprite)
objects (Sprite)
  |->object1 (Sprite)
  |->object2 (Sprite)
  |->object3 (Sprite)
  |->object4 (Sprite)
  |->object5 (Sprite)

object6を作成したときには
 objects.addChild(object6);
とすれば、ツールボックスやダイアログの上に表示されずに済むようです。

制作・©:のぼる/N.Lab