6-2-2.表示オブジェクトの移動
March 28, 2007
表示オブジェクトを表示リスト内で移動させるには次のメソッドを使います。
setChildIndex()メソッド
表示オブジェクトと移動先のインデックスを指定し、オブジェクトを移動させます。
サンプルコード
package {
import flash.display.Sprite;
import flash.display.Shape;
public class Main extends Sprite{
public function Main ():void {
// a
var a:Shape = new Shape();
a.name = "a";
a.graphics.beginFill(0xcccccc);
a.graphics.drawRect(30,30,50,50);
a.graphics.endFill();
addChild(a);
// b
var b:Shape = new Shape();
b.name = "b";
b.graphics.beginFill(0x666666);
b.graphics.drawRect(50,50,50,50);
b.graphics.endFill();
addChild(b);
// bをaの下に移動
setChildIndex(b,0);
}
}
}
上のサンプル例ではsetChildIndex()メソッドを使う前は、aが下、bが上に表示されます。setChildIndex(b,0)とすることで、bのインデックスを0に変更しているので、bが下になります。
setChildIndex(b,0)は、他にも次に挙げるプロパティやメソッドを使って同じ効果を得られます。
numChildrenプロパティ
numChildrenはオブジェクトコンテナの子の数を返します。a、b2つのオブジェクトが配置されている場合、numChildrenは2になります。
aオブジェクトを一番手前にするには次のようにします。
var topPosition:uint = numChildren - 1;
setChildIndex(a, topPosition);
getChildAt()メソッド
指定のインデックスにある子のインスタンスを返します。
インデックス1のbオブジェクトを、インデックス0に移動させるには次のようにします。
setChildIndex(getChildAt(1), 0);
getChildByName()メソッド
指定した名前に一致する表示オブジェクトを返します。
bオブジェクトをインデックス0に移動させるには次のようにします。getChildAt()メソッドに比べ、パフォーマンスが劣ります。
setChildIndex(getChildByName("b"), 0);
getChildIndex()メソッド
指定したオブジェクトのインデックスを返します。
オブジェクトaをオブジェクトbの位置に移動したい時は次のようにします。
setChildIndex(a,getChildIndex(b));
その他、表示オブジェクトを移動するのに使うメソッドには次のものがあります。
swapChildren()メソッド
指定した2つのオブジェクトのインデックスを入れ替えます。指定した以外のオブジェクトのインデックスはそのままの状態で残ります。
オブジェクトaとbのインデックスを入れ替えるには次のようにします。
swapChildren(a,b);
swapChildrenAt()メソッド
指定した2つのインデックスにあるオブジェクトを入れ替えます。指定した以外のオブジェクトのインデックスはそのままの状態で残ります。
インデックス0と1のオブジェクトを入れ替えるには次のようにします。
swapChildrenAt(0,1);
参考URL
Adobe Flex 2 リファレンスガイド DisplayObjectContainerクラス
トラックバック
トラックバックURL
(トラックバックは承認後に公開されます)

