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.
|
|
|