Criação e movimentação de objetos 3DFlash Player 10 e posterior, Adobe AIR 1.5 e posterior 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. |
|