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.
|
|
|