3D-weergaveobjecten maken en verplaatsen

Flash Player 10 of hoger, Adobe AIR 1.5 of hoger

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.