Erstellen und Verschieben dreidimensionaler Anzeigeobjekte

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.