Bir DisplayObjectContainer nesnesi görüntüleme listesinden silinirse veya bir şekilde taşınır ya da dönüştürülürse, DisplayObjectContainer öğesindeki görüntüleme nesnelerinin her biri de silinir, taşınır veya dönüştürülür.
Görüntüleme nesnesi kabı da bir tür görüntüleme nesnesidir—başka bir görüntüleme nesnesi kabına eklenebilir. Örneğin, aşağıdaki görüntü, bir anahat şeklinin ve başka dört tane görüntüleme nesnesi kabının (PictureFrame türünde) yer aldığı bir görüntüleme nesnesi kabını (
pictureScreen
) göstermektedir:
Grafiği tam boyut görüntüle
-
A.
-
pictureScreen görüntüleme nesnesi kabının kenarlığını tanımlayan bir şekil
-
B.
-
pictureScreen nesnesinin alt öğeleri olan dört görüntüleme nesnesi kabı
Bir görüntüleme nesnesinin görüntüleme listesinde görüntülenmesi için, söz konusu görüntüleme nesnesini, görüntüleme listesindeki görüntüleme nesnesi kabına eklemeniz gerekir. Kap nesnesinin
addChild()
yöntemini veya
addChildAt()
yöntemini kullanarak bunu yaparsınız. Örneğin, aşağıdaki kodun son satırı olmadan
myTextField
nesnesi görüntülenmez:
var myTextField:TextField = new TextField();
myTextField.text = "hello";
this.root.addChild(myTextField);
Bu kod örneğinde,
this.root
öğesi, kodu içeren MovieClip görüntüleme nesnesi kabını işaret eder. Gerçek kodunuzda farklı bir kap belirtebilirsiniz.
Alt öğeyi, görüntüleme nesnesi kabının alt öğe listesinde belirli bir konuma eklemek için
addChildAt()
yöntemini kullanın. Alt öğe listesindeki sıfır tabanlı dizin konumları, görüntüleme nesnelerinin katmanlamasına (önden arkaya sıralama) göredir. Örneğin, şu üç görüntüleme nesnesini göz önünde bulundurun. Her nesne, Ball adında özel bir sınıftan oluşturulmuştur.
Bu görüntüleme nesnelerinin katmanlaması,
addChildAt()
yöntemi kullanılarak ayarlanabilir. Örneğin, şu kodu göz önünde bulundurun:
ball_A = new Ball(0xFFCC00, "a");
ball_A.name = "ball_A";
ball_A.x = 20;
ball_A.y = 20;
container.addChild(ball_A);
ball_B = new Ball(0xFFCC00, "b");
ball_B.name = "ball_B";
ball_B.x = 70;
ball_B.y = 20;
container.addChild(ball_B);
ball_C = new Ball(0xFFCC00, "c");
ball_C.name = "ball_C";
ball_C.x = 40;
ball_C.y = 60;
container.addChildAt(ball_C, 1);
Bu kod çalıştırıldıktan sonra, görüntüleme nesneleri
container
DisplayObjectContainer nesnesine şu şekilde konumlandırılır. Nesnelerin katmanlamasına dikkat edin.
Bir nesneyi görüntüleme listesinin en üstüne yeniden konumlandırmak için söz konusu nesneyi listeye yeniden eklemeniz yeterli olacaktır. Örneğin, bir önceki koddan sonra,
ball_A
öğesini yığının en üst kısmına taşımak için bu kod satırını kullanın:
container.addChild(ball_A);
Bu kod,
ball_A
öğesini
container
öğesinin görüntüleme listesindeki konumundan etkili şekilde kaldırır ve listenin en üst kısmına yeniden ekler, böylece yığının en üst kısmına taşınmış olur.
Görüntüleme nesnelerinin katman sırasını doğrulamak için
getChildAt()
yöntemini kullanabilirsiniz.
getChildAt()
yöntemi, kendisine ilettiğiniz dizin sayısını esas alarak bir kabın alt nesnelerini döndürür. Örneğin, aşağıdaki kod,
container
DisplayObjectContainer nesnesinin alt öğe listesindeki farklı konumlarda bulunan görüntüleme nesnelerinin adlarını gösterir:
trace(container.getChildAt(0).name); // ball_A
trace(container.getChildAt(1).name); // ball_C
trace(container.getChildAt(2).name); // ball_B
Üst kabın alt öğe listesinden bir görüntüleme nesnesini kaldırırsanız, listedeki yüksek konumda bulunan öğelerin her biri alt dizinde bir konum aşağı taşınır. Örneğin, önceki kodla devam ederek, aşağıdaki kod, alt öğe listesinde daha düşük düzeyde bulunan bir görüntüleme nesnesi kaldırıldığında
container
DisplayObjectContainer öğesinde konum 2'de bulunan görüntüleme nesnesinin nasıl konum 1'e hareket ettiğini gösterir:
container.removeChild(ball_C);
trace(container.getChildAt(0).name); // ball_A
trace(container.getChildAt(1).name); // ball_B
removeChild()
ve
removeChildAt()
yöntemleri, görüntüleme nesnesi örneğinin tamamını silmez. Yalnızca kabın alt öğe listesinden kaldırır. Halen başka bir değişken tarafından örneğe başvurulabilir. (Bir nesneyi tamamen kaldırmak için
delete
operatörünü kullanın.)
Görüntüleme nesnesi yalnızca bir üst kaba sahip olduğundan, görüntüleme nesnesi örneğini yalnızca bir görüntüleme nesnesi kabına ekleyebilirsiniz. Örneğin, aşağıdaki kod,
tf1
görüntüleme nesnesinin yalnızca bir kapta (bu durumda, DisplayObjectContainer sınıfını genişleten bir Sprite öğesi) bulunabildiğini gösterir:
tf1:TextField = new TextField();
tf2:TextField = new TextField();
tf1.name = "text 1";
tf2.name = "text 2";
container1:Sprite = new Sprite();
container2:Sprite = new Sprite();
container1.addChild(tf1);
container1.addChild(tf2);
container2.addChild(tf1);
trace(container1.numChildren); // 1
trace(container1.getChildAt(0).name); // text 2
trace(container2.numChildren); // 1
trace(container2.getChildAt(0).name); // text 1
Bir görüntüleme nesnesi kabında bulunan görüntüleme nesnesini başka bir görüntüleme nesnesi kabına eklerseniz, söz konusu görüntüleme nesnesi birinci görüntüleme nesnesi kabının alt öğe listesinden kaldırılır.
DisplayObjectContainer sınıfı, yukarıda açıklanan yöntemlere ek olarak, aralarında aşağıdakilerin de yer aldığı alt görüntüleme nesneleriyle çalışılmasına yönelik birçok yöntemi tanımlar:
-
contains()
: Görüntüleme nesnesinin bir DisplayObjectContainer öğesinin alt öğesi olup olmadığını belirler.
-
getChildByName()
: Ada göre bir görüntüleme nesnesini alır.
-
getChildIndex()
: Görüntüleme nesnesinin dizin konumunu döndürür.
-
setChildIndex()
: Alt görüntüleme nesnesinin konumunu değiştirir.
-
removeChildren()
: Birden çok alt görüntü nesnesi kaldırır.
-
swapChildren()
: İki görüntüleme nesnesinin önden arkaya sırasını değiştirir.
-
swapChildrenAt()
: Dizin değerleriyle belirtildiği şekilde, iki görüntüleme nesnesinin önden arkaya sırasını değiştirir.
Daha fazla bilgi için
Adobe Flash Platformu için ActionScript 3.0 Başvurusu
içindeki ilgili girişlere bakın.
Görüntüleme listesi dışında olan (Sahne Alanı'nın alt öğesi olan bir görüntüleme nesnesi kabında bulunmayan) bir görüntüleme nesnesinin
liste dışı
görüntüleme nesnesi olarak bilindiğini unutmayın.