Verwenden von Matrix-Objekten

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Die Matrix -Klasse repräsentiert eine Transformationsmatrix, die bestimmt, wie Punkte zwischen verschiedenen Koordinatenräumen abgebildet werden. Sie können verschiedene grafische Transformationen für ein Anzeigeobjekt durchführen, indem Sie die Eigenschaften eines „Matrix“-Objekts festlegen, dieses „Matrix“-Objekt auf die matrix -Eigenschaft eines „Transform“-Objekts anwenden und dieses „Transform“-Objekt dann als transform -Eigenschaft des Anzeigeobjekts anwenden. Die verfügbaren Transformationsfunktionen sind Versetzen ( x - und y -Neupositionierung), Drehen, Skalieren und Neigen.

Obwohl eine Matrix definiert werden kann, indem die Eigenschaften ( a , b , c , d , tx , ty ) eines Matrix-Objekts direkt festgelegt werden, ist es einfacher, die createBox() -Methode zu verwenden. Diese Methode enthält Parameter, über die Sie die Effekte zum Skalieren, Drehen und Versetzen der resultierenden Matrix direkt definieren können. Mit dem folgenden Code wird beispielsweise ein Matrix-Objekt erstellt, das ein Objekt horizontal mit dem Faktor 2,0 und vertikal mit dem Faktor 3,0 skaliert, um 45 Grad dreht sowie um 10 Pixel nach rechts und um 20 Pixel nach unten verschiebt (versetzt):

var matrix:Matrix = new Matrix(); 
var scaleX:Number = 2.0; 
var scaleY:Number = 3.0; 
var rotation:Number = 2 * Math.PI * (45 / 360); 
var tx:Number = 10; 
var ty:Number = 20; 
matrix.createBox(scaleX, scaleY, rotation, tx, ty);

Sie können die Effekte eines Matrix-Objekts zum Skalieren, Drehen und Versetzen auch mithilfe der Methoden scale() , rotate() und translate() anpassen. Beachten Sie, dass bei diesen Methoden die übergebenen Parameter mit den Werten des bestehenden Matrix-Objekts kombiniert werden. Mit dem folgenden Code wird beispielsweise ein Matrix-Objekt festgelegt, mit dem ein Objekt um den Faktor 4 skaliert und um 60° gedreht wird, da die Methoden scale() und rotate() zweimal aufgerufen werden:

var matrix:Matrix = new Matrix(); 
var rotation:Number = 2 * Math.PI * (30 / 360); // 30° 
var scaleFactor:Number = 2; 
matrix.scale(scaleFactor, scaleFactor); 
matrix.rotate(rotation); 
matrix.scale(scaleX, scaleY); 
matrix.rotate(rotation); 
 
myDisplayObject.transform.matrix = matrix;

Wenn Sie ein Matrix-Objekt neigen möchten, ändern Sie die entsprechende b - oder c -Eigenschaft. Durch Ändern der b -Eigenschaft wird die Matrix vertikal geneigt und durch Ändern der c -Eigenschaft wird sie horizontal geneigt. Mit dem folgenden Code wird das Matrix-Objekt myMatrix um den Faktor 2 vertikal geneigt:

var skewMatrix:Matrix = new Matrix(); 
skewMatrix.b = Math.tan(2); 
myMatrix.concat(skewMatrix);

Sie können eine Matrixtransformation auf die transform -Eigenschaft eines Anzeigeobjekts anwenden. Mit dem folgenden Code wird beispielsweise eine Matrixtransformation auf das Anzeigeobjekt myDisplayObject angewendet:

var matrix:Matrix = myDisplayObject.transform.matrix; 
var scaleFactor:Number = 2; 
var rotation:Number = 2 * Math.PI * (60 / 360); // 60° 
matrix.scale(scaleFactor, scaleFactor); 
matrix.rotate(rotation); 
 
myDisplayObject.transform.matrix = matrix;

In der ersten Zeile wird ein Matrix-Objekt auf die vorhandene Transformationsmatrix gesetzt, die im myDisplayObject -Anzeigeobjekt verwendet wird (die matrix -Eigenschaft der transformation -Eigenschaft des myDisplayObject -Anzeigeobjekts). Auf diese Weise haben die Methoden der aufgerufenen Matrix-Klasse eine kumulative Auswirkung auf die aktuelle Position, Skalierung und Drehung des Anzeigeobjekts.

Hinweis: Das flash.geometry-Paket enthält auch die ColorTransform-Klasse. Mit dieser Klasse wird die colorTransform -Eigenschaft eines Transform-Objekts festgelegt. Da hierbei keine geometrischen Transformationen angewendet werden, wird sie hier nicht näher erläutert. Weitere Informationen finden Sie in der Beschreibung der ColorTransform -Klasse im ActionScript 3.0-Referenzhandbuch für die Adobe Flash-Plattform .