Creazione e spostamento di oggetti 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.