Erstellen und Verschieben dreidimensionaler Objekte

Flash Player 10 und höher, Adobe AIR 1.5 und höher

Um ein zweidimensionales in ein dreidimensionales Anzeigeobjekt zu konvertieren, können Sie seine z-Eigenschaft explizit auf einen numerischen Wert setzen. Wenn Sie der z-Eigenschaft einen Wert zuweisen, wird ein neues Transform-Objekt für das Anzeigeobjekt erstellt. Sie können ein neues Transform-Objekt auch erstellen, indem Sie die DisplayObject.rotationX- oder DisplayObject.rotationY-Eigenschaft einstellen. Das Transform-Objekt besitzt eine Matrix3D-Eigenschaft, die bestimmt, wie das Anzeigeobjekt im dreidimensionalen Raum dargestellt wird.

Im folgenden Code werden die Koordinaten für ein Anzeigeobjekt mit dem Namen „leaf“ gesetzt:

leaf.x = 100; leaf.y = 50; leaf.z = -30;

Sie können diese Werte sowie davon abgeleitete Eigenschaften über die matrix3D-Eigenschaft des Transform-Objekts von „leaf“ anzeigen:

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);

Informationen zu den Eigenschaften des Transform-Objekts finden Sie in der Beschreibung der Transform-Klasse. Informationen zu den Eigenschaften des Matrix3D-Objekts finden Sie in der Beschreibung der Matrix3D-Klasse.

Verschieben eines Objekts im 3D-Raum

Sie verschieben ein Objekt in einem dreidimensionalen Raum, indem Sie die Werte der x-, y- oder z-Eigenschaft ändern. Wenn Sie den Wert der z-Eigenschaft ändern, entsteht der Eindruck, dass das Objekt dem Betrachter näher rückt oder sich vom Betrachter entfernt.

Durch den folgenden Code werden zwei Ellipsen entlang ihrer z-Achsen vor- und zurückgesetzt, indem als Reaktion auf ein Ereignis der Wert ihrer z-Eigenschaft geändert wird. Dabei bewegt sich ellipse2 schneller als ellipse1, da ihre z-Eigenschaft bei jedem Bildereignis um ein Vielfaches von 20 erhöht wird, während die z-Eigenschaft von ellipse1 nur um ein Vielfaches von 10 erhöht wird:

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; 
    } 
}

Drehen eines Objekts im 3D-Raum

Sie können ein Objekt auf drei unterschiedliche Arten drehen, abhängig davon, wie Sie die Dreheigenschaften des Objekts einstellen: rotationX, rotationY und rotationZ.

Die Abbildung unten zeigt zwei Quadrate, die nicht gedreht wurden.

Die nächste Abbildung zeigt dieselben zwei Quadrate, wenn Sie die rotationY-Eigenschaft des Containers der beiden Quadrate erhöhen, sodass sie um die y-Achse gedreht werden. Durch das Drehen des Containers, oder übergeordneten Anzeigeobjekts, werden auch die beiden Quadrate gedreht:

container.rotationY += 10;

Die nächste Abbildung zeigt, was passiert, wenn Sie die rotationX-Eigenschaft des Containers der Quadrate setzen. Die Quadrate werden um die x-Achse gedreht.

Die nächste Abbildung zeigt, was passiert, wenn Sie die rotationZ-Eigenschaft des Containers der Quadrate erhöhen. Die Quadrate werden um die z-Achse gedreht.

Ein Anzeigeobjekt kann im dreidimensionalen Raum gleichzeitig verschoben und gedreht werden.