3D-objecten maken en verplaatsenFlash 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-ruimteU 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-ruimteU 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. |
![]() |