3B görüntüleme nesneleri oluşturma ve taşıma

Flash Player 10 ve üstü, Adobe AIR 1.5 ve üstü

2B görüntüleme nesnesini 3B görüntüleme nesnesine dönüştürmek için, bu nesnenin z özelliğini sayısal bir değere ayarlayabilirsiniz. z özelliğine bir değer atadığınızda, görüntüleme nesnesi için yeni bir Transform nesnesi oluşturulur. DisplayObject.rotationX veya DisplayObject.rotationY özelliklerinin ayarlanmasıyla yeni bir Transform nesnesi oluşturulur. Transform nesnesi, görüntüleme nesnesinin 3B alanda temsil edilme şeklini yöneten bir Matrix 3D özelliğini içerir.

Şu kod, "leaf" adındaki bir görüntüleme nesnesinin koordinatlarını ayarlar:

leaf.x = 100; leaf.y = 50; leaf.z = -30;

Yaprak öğesinin Transform nesnesinin matrix3D özelliğinde, bu değerlerden kaynaklanan özelliklerin yanı sıra bu değerleri de görebilirsiniz:

var leafMatrix:Matrix3D  = leaf.transform.matrix3D; 
 
trace(leafMatrix.position.x); 
trace(leafMatrix.position.y); 
trace(leafMatrix.position.z); 
trace(leafMatrix.position.length); 
trace(leafMatrix.position.lengthSquared);

Transform nesnesinin özellikleriyle ilgili bilgi için bkz. Transform sınıfı. Matrix3B nesnesinin özellikleriyle ilgili bilgi için bkz. Matrix3B sınıfı.

3B alanda nesneyi taşıma

x, y, z özelliklerini değiştirerek 3B alanda bir nesneyi taşıyabilirsiniz. z özelliğinin değerini değiştirdiğinizde, nesne izleyene yaklaşıyor veya uzaklaşıyor gibi görünür.

Şu kod, bir olaya yanıt olarak z özelliklerinin değerini değiştirerek iki elipsi z ekseni boyunca ileri geri hareket ettirir. ellipse2 , ellipse1 öğesinden daha hızlı hareket eder: her Frame olayında ellipse1 öğesinin z özelliği 10'un katıyla artırılırken, bunun z özelliği 20'nin katıyla artırılır:

var depth:int = 1000; 
 
function ellipse1FrameHandler(e:Event):void 
{ 
    ellipse1Back = setDepth(e, ellipse1Back); 
    e.currentTarget.z += ellipse1Back * 10; 
} 
function ellipse2FrameHandler(e:Event):void 
{ 
    ellipse2Back = setDepth(e, ellipse1Back); 
    e.currentTarget.z += ellipse1Back * 20; 
} 
function setDepth(e:Event, d:int):int 
{ 
    if(e.currentTarget.z > depth) 
    { 
        e.currentTarget.z = depth; 
        d = -1; 
    } 
    else if (e.currentTarget.z <  0) 
    { 
        e.currentTarget.z = 0; 
        d = 1; 
    } 
}

3B alanda nesneyi döndürme

Nesnenin dönüş özelliklerini nasıl ayarladığınıza bağlı olarak, bir nesneyi üç farklı şekilde döndürebilirsiniz: rotationX , rotationY ve rotationZ .

Aşağıdaki şekil, döndürülmemiş iki kareyi gösterir:

Sonraki şekil, y ekseninde döndürmek için karelerin kabının rotationY özelliğini artırdığınızda iki kareyi gösterir. İki karenin kabının veya üst görüntüleme nesnesinin döndürülmesiyle iki kare döndürülür:

container.rotationY += 10;

Sonraki şekil, karelerin kabının rotationX özelliğini ayarladığınızda ne olduğunu gösterir. Bu, x eksenindeki kareleri döndürür.

Sonraki şekil, karelerin kabının rotationZ özelliğini artırdığınızda ne olduğunu gösterir. Bu, z eksenindeki kareleri döndürür.

Görüntüleme nesnesi 3B alanda aynı anda hareket edip dönebilir.