Creación y movimiento de objetos de visualización 3D

Flash Player 10 y posterior, Adobe AIR 1.5 y posterior

Para convertir un objeto de visualización 2D en un objeto de visualización 3D, puede establecer su propiedad z de forma explícita en un valor numérico. Cuando se asigna un valor a la propiedad z , se crea un nuevo objeto Transform para el objeto de visualización. Con la definición de las propiedades DisplayObject.rotationX o DisplayObject.rotationY también se crea un nuevo objeto Transform. El objeto Transform contiene una propiedad Matrix3D que determina el modo en que se representa el objeto de visualización en el espacio 3D.

En el siguiente código se establecen las coordenadas para un objeto de visualización denominado “leaf”:

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

Estos valores, así como las propiedades que se derivan de los mismos, se pueden ver en la propiedad matrix3D del objeto Transform de la hoja:

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);

Para obtener información sobre las propiedades del objeto Transform, consulte la clase Transform . Para obtener información sobre las propiedades del objeto Matrix3D, consulte la clase Matrix3D .

Movimiento de un objeto en el espacio 3D

Puede mover un objeto en un espacio 3D cambiando los valores de sus propiedades x, y o z . Cuando se cambia el valor de la propiedad z , el objeto parece acercarse o alejarse del espectador.

El siguiente código mueve dos elipses hacia delante y hacia atrás a lo largo de sus ejes z, cambiando el valor de sus propiedades z como respuesta a un evento. ellipse2 se mueve más rápido que ellipse1 : su propiedad z se vé aumentada por un múltiplo de 20 en cada evento Frame, mientras que la propiedad z de ellipse1 se vé aumentada por un múltiplo de 10:

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; 
    } 
}

Rotación de un objeto en el espacio 3D

Se puede girar un objeto de tres formas distintas, dependiendo del modo en que se establezcan las propiedades de rotación del objeto: rotationX , rotationY y rotationZ .

La siguiente figure muestra dos cuadrados que no se giran:

La siguiente figura muestra los dos cuadrados cuando se incrementa la propiedad rotationY del contenedor de los cuadrados para girarlos en el eje y. Con la rotación del contenedor, u objeto de visualización principal, de los dos cuadrados giran ambos cuadrados:

container.rotationY += 10;

En la siguiente figura se muestra qué sucede cuando se establece la propiedad rotationX del contenedor de los cuadrados. Con ello se giran los cuadrados en el eje x.

En la siguiente figura se muestra qué sucede cuando se incrementa la propiedad rotationZ del contenedor de los cuadrados. Con ello se giran los cuadrados en el eje z.

Un objeto de visualización se puede mover y girar simultáneamente en un espacio 3D.