Creazione e spostamento di oggetti di visualizzazione 3D

Flash Player 10 e versioni successive, Adobe AIR 1.5 e versioni successive

Per convertire un oggetto di visualizzazione 2D in un oggetto di visualizzazione 3D, potete impostarne esplicitamente la proprietà z su un valore numerico. Quando assegnate un valore alla proprietà z , viene creato un nuovo oggetto Transform per l'oggetto di visualizzazione. Potete creare un nuovo oggetto Transform anche impostando la proprietà DisplayObject.rotationX o DisplayObject.rotationY . L'oggetto Transform contiene una proprietà Matrix3D che controlla il modo in cui l'oggetto di visualizzazione è rappresentato nello spazio tridimensionale.

Il codice seguente imposta le coordinate per un oggetto di visualizzazione di nome “leaf”:

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

Potete visualizzazione questi valori, oltre alle proprietà da essi derivate, nella proprietà matrix3D dell'oggetto Transform di leaf:

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

Per informazioni sulle proprietà dell'oggetto Transform, vedete la classe Transform . Per informazioni sulle proprietà dell'oggetto Matrix3D, vedete la classe Matrix3D .

Spostamento di un oggetto nello spazio tridimensionale

Potete spostare un oggetto nello spazio tridimensionale modificando i valori delle sue proprietà x, y o z . Quando modificate il valore della proprietà z , l'oggetto sembra avvicinarsi o allontanarsi da chi guarda.

Il codice seguente sposta due ellissi avanti e indietro lungo il relativo asse z modificandone il valore delle proprietà z in risposta a un evento. ellipse2 si sposta più velocemente di ellipse1 : la sua proprietà z viene aumentata di un multiplo di 20 su ciascun evento Frame, mentre la proprietà z di ellipse1 viene aumentata di un multiplo di 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; 
    } 
}

Rotazione di un oggetto nello spazio tridimensionale

Potete ruotare un oggetto in tre modi diversi, a seconda di come impostate le proprietà di rotazione dell'oggetto: rotationX , rotationY e rotationZ .

La figura seguente mostra due quadrati che non vengono ruotati:

La figura seguente mostra i due quadrati quando incrementate la proprietà rotationY del contenitore dei quadrati per ruotarli sull'asse y. Se ruotate il contenitore (o l'oggetto di visualizzazione principale) dei due quadrati, ruotano anche i due quadrati:

container.rotationY += 10;

La figura seguente mostra cosa accade quando impostate la proprietà rotationX del contenitore dei quadrati. I quadrati ruotano sull'asse x.

La figura seguente mostra cosa accade quando incrementate la proprietà rotationZ del contenitore dei quadrati. I quadrati ruotano sull'asse z.

Un oggetto di visualizzazione può contemporaneamente muoversi e ruotare nello spazio tridimensionale.