U kunt een 2D-weergaveobject converteren naar een 3D-weergaveobject door de eigenschap
z
expliciet in te stellen op een numerieke waarde. Wanneer u een waarde toewijst aan de eigenschap
z
, wordt een nieuw Transform-object voor het weergaveobject gemaakt. Door de eigenschap
DisplayObject.rotationX
of
DisplayObject.rotationY
in te stellen, wordt ook een nieuw Transform-object gemaakt. Het Transform-object heeft de eigenschap
Matrix3D
die regelt hoe het weergaveobject wordt gerepresenteerd in de 3D-ruimte.
De volgende code stelt de coördinaten in voor een weergaveobject met de naam “leaf”:
leaf.x = 100; leaf.y = 50; leaf.z = -30;
U kunt deze waarden, en de eigenschappen die zijn afgeleid van deze waarden, zien in de eigenschap
matrix3D
van het Transform-object van "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);
Zie de klasse
Transform
voor meer informatie over de eigenschappen van het Transform-object. Zie de klasse
Matrix3D
voor meer informatie over de eigenschappen van het Matrix3D-object.
Objecten verplaatsen in een 3D-ruimte
U kunt een object verplaatsen in de 3D-ruimte door de waarden van de eigenschap
x, y of z
te wijzigen. Door de waarde van de eigenschap
z
te wijzigen, lijkt het object dichterbij of verder weg van de kijker te worden verplaatst.
De volgende code verplaatst twee ellipsen naar achteren en naar voren langs hun x-as door de waarde van de eigenschap
z
te wijzigen als reactie op een gebeurtenis.
ellipse2
beweegt sneller dan
ellipse1
: de eigenschap
z
van ellipse2 wordt bij elke framegebeurtenis verhoogd met een veelvoud van 20, terwijl de eigenschap
z
van
ellipse1
wordt verhoogd met een veelvoud van 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;
}
}
Objecten roteren in de 3D-ruimte
U kunt een object op drie manieren roteren, afhankelijk van de manier waarop u de rotatie-eigenschappen van een object instelt:
rotationX
,
rotationY
en
rotationZ
.
In de afbeelding hieronder ziet u twee vierkanten die niet zijn geroteerd:
In de volgende afbeelding ziet u de twee vierkanten nadat de eigenschap
rotationY
van de container van de vierkanten is verhoogd om de vierkanten te roteren langs de y-as. Door de container, of het bovenliggende weergaveobject, van de twee vierkanten te roteren, worden de beide vierkanten geroteerd:
container.rotationY += 10;
In de volgende afbeelding ziet u wat er gebeurt als u de eigenschap
rotationX
van de container voor de vierkanten instelt. Hierdoor worden de vierkanten geroteerd langs de x-as.
In de volgende afbeelding ziet u wat er gebeurt als u de eigenschap
rotationZ
van de container van de vierkanten verhoogt. Hierdoor roteren de vierkanten langs de z-as.
Een weergaveobject kan tegelijkertijd worden verplaatst en geroteerd in de 3D-ruimte.
|
|
|