Mingにおける深度の扱い

PerlにはMingというライブラリがあり、プログラムでSWFムービーを生成することができる。
Mingで生成したSWFのシンボルには深度を設定することができるが、設定方法には2通りある。
1. setDepthメソッドを使う

my $movie = new SWF::Movie();
my $mc = new SWF::MovieClip();
my $handle = $movie->add($mc);
$handle->setDepth(100);

2. ActionScript内でduplicateClipしたときに設定する

clip = /mc;
name = 'hoge';
depth = 100;
duplicateClip(clip, name, depth)

1と2では双方ともに深度として100を指定しているが、setDepthメソッドとduplicateClipでは深度の扱われ方が違う。
duplicateClipで指定できる深度の幅は-16384から1048575となっており、setDepth(0)はduplicateClip(clip, name, -16384)と等しくなる。つまり、setDepth(16384)と指定した深度とduplicateClip(clip, name, 0)が等しくなる。
そのため、setDepthで深度を指定する場合はオフセット値として常に16384を足すと良い。こうすることでsetDepthするときとduplicateClipするときで深度の違いを意識しなくて済む。

参考URL
http://help.adobe.com/ja_JP/FlashLite/2.0_FlashLiteAPIReference2/WS5b3ccc516d4fbf351e63e3d118ccf9c47f-7ff2.html