Para converter um objeto de exibição 2D em um objeto de exibição 3D, você pode definir explicitamente a propriedade
z
correspondente com um valor numérico. Quando você atribui um valor para a propriedade
z
, é criado um novo objeto Transform para o objeto de exibição. Definir as propriedades
DisplayObject.rotationX
ou
DisplayObject.rotationY
também cria um novo objeto Transform. O objeto Transform contém uma propriedade
Matrix3D
que determina como o objeto de exibição é representado no espaço 3D.
O seguinte código define as coordenadas para um objeto de exibição chamado “leaf” (folha):
leaf.x = 100; leaf.y = 50; leaf.z = -30;
Você pode ver estes valores, bem como as propriedades derivadas deles, na propriedade
matrix3D
do objeto Transform da folha:
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 obter informações sobre as propriedades do objeto Transform, consulte a classe
Transform
. Para obter informações sobre as propriedades do objeto Matrix3D, consulte a classe
Matrix3D
.
Movimentação de um objeto no espaço 3D
É possível movimentar um objeto no espaço 3D alterando os valores de suas propriedades
x, y ou z
. Quando você altera o valor da propriedade
z
, o objeto parece aproximar-se ou afastar-se do visualizador.
O código a seguir movimenta duas elipses para frente e para trás ao longo dos eixos z alterando o valor das respectivas propriedades
z
em resposta a um evento.
ellipse2
movimenta-se mais rápido do que
ellipse1
: sua propriedade
z
é aumentada por um múltiplo de 20 em cada evento Frame, enquanto a propriedade
z
de
ellipse1
é aumentada por um 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;
}
}
Rotação de um objeto no espaço 3D
É possível girar um objeto de três formas diferentes, dependendo de como você definir as propriedades de rotação do objeto:
rotationX
,
rotationY
e
rotationZ
.
A figura abaixo mostra dois quadrados que não são girados:
A próxima figura mostra os dois quadrados quando você incrementa a propriedade
rotationY
do contêiner dos quadrados para girá-los no eixo y. Girar o contêiner, ou o objeto de exibição pai, dos dois quadrados gira ambos os quadrados:
container.rotationY += 10;
A próxima figura mostra o que acontece quando você define a propriedade
rotationX
do contêiner dos quadrados. Isso gira os quadrados no eixo x.
A próxima figura mostra o que acontece quando você incrementa a propriedade
rotationZ
do contêiner dos quadrados. Isso gira os quadrados no eixo z.
Um objeto de exibição pode, ao mesmo tempo, se movimentar e girar no espaço 3D.
|
|
|