AS3.0リンケージ深度やレイヤー階層
ActionScript3.0
深度・階層
リンケージ
addChild
removeChild
swapChildren
numChildren
getChildIndex
addChildAt
removeChildAt
ActionScript3.0はAS2.0と違ってdepth(デプス)を使用しません。
リンケージからのaddChildでインスタンスを追加した場合、後から追加したリンケージ(クラス)が上の深度(インデックス)に位置します。深度(インデックス)のルールは、0から始まり、同一レイヤーでmcを追加するたびに1づつ増えていきます。
addChild(mc1); // 深度(インデックス)0
addChild(mc2); // 深度(インデックス)1
addChild(mc3); // 深度(インデックス)2
深度を指定するには、addChildAt(mc1,0);を使用し、深度を参照するにはgetChildIndex(mc1);で深度が取得できます。
しかも深度の指定については必ず0を起点として隣接している必要があるようです。
インデックスのエラー
『指定したインデックスが境界外です』
がパブリッシュ時に出る場合は、主に深度の指定があっていない場合です。
AS3.0での深度と重なり順のコントロールですが、
addChildAt(ms,2)とした場合、『指定したインデックスが境界外です』でエラーがでます。
これはAS3.0でのインデックス制御の仕様で、基本を0として、addChildするたび自動的に1づつ加算され、深度が重なりあっていないとエラーがでるのですね。
numChildrenクラスでは、階層が持つインスタンスの総数を取得します。
swapChildrenクラスでは、重なり順を入れ替えることができます。
【記述例】
trace(stage.numChildren);//stage上のインスタンスの総数を取得stage.swapChildren(mcA,mcB);//stage上のmcAとmcBの深度(レイヤー)を入れ替える
インスタンスを削除する場合は、
removeChild(インスタンス名);
removeChildAt(深度);
で指定して削除をします。