Skapa och flytta 3D-objektFlash Player 10 och senare, Adobe AIR 1.5 och senare Om du vill konvertera ett 2D-visningsobjekt till ett 3D-visningsobjekt anger du explicit dess z-egenskap till ett numeriskt värde. När du tilldelar ett värde till z-egenskapen, skapas ett nytt Transform-objekt för visningsobjektet. När du ställer in egenskapen DisplayObject.rotationX eller DisplayObject.rotationY skapas också ett nytt Transform-objekt. Transform-objektet innehåller en Matrix3D-egenskap som styr hur visningsobjektet visas i 3D-rymden. Följande kod ställer in koordinaterna för ett visningsobjekt med namnet ”leaf”: leaf.x = 100; leaf.y = 50; leaf.z = -30; Dessa värden, samt egenskaper som härleds från dessa värden, visas i matrix3D-egenskapen för bladets Transform-objekt: 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); Mer information om egenskaperna för Transform-objektet finns i avsnittet om Transform-klassen. Mer information om egenskaperna för Matrix3D-objektet finns i avsnittet om Matrix3D-klassen. Flytta ett objekt i 3D-rymdenDu kan flytta ett objekt i 3D-rymden genom att ändra värdena på dess x-, y- och z-egenskaper. När du ändrar värdet på z-egenskapen verkar det som om objektet flyttas närmare eller längre bort från vypunkten. Följande kod flyttar två ellipser bakåt och framåt utmed deras z-axlar genom att ändra värdet på z-egenskaperna som svar på en händelse. ellipse2 flyttar snabbare än ellipse1: z-egenskapen för ellipse2 ökar med multipeln 20 vid varje Frame-händelse medan z-egenskapen för ellipse1 ökar med multipeln 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; } } Rotera ett objekt i 3D-rymdenDu kan rotera ett objekt på tre olika sätt, beroende på hur du ställer in objektets rotationsegenskaper: rotationX, rotationY och rotationZ. I bilden nedan visas två fyrkanter som inte roterar: I nästa bild visas de två fyrkanterna när du ökar rotationY-egenskapen för fyrkanternas behållare för att rotera dem vid y-axeln. Om du roterar behållaren, eller det överordnade visningsobjektet, roteras båda fyrkanterna: container.rotationY += 10; I nästa bild visas vad som händer när du ställer in rotationX-egenskapen för fyrkanternas behållare. Då roteras fyrkanterna vid x-axeln. I nästa bild visas vad som händer när du ökar rotationZ-egenskapen för fyrkanternas behållare. Då roteras de vid z-axeln. Ett visningsobjekt kan flytta och rotera samtidigt i 3D-ytan. |
|