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