De
Matrix
-klasse representeert een transformatiematrix waarmee wordt bepaald hoe punten worden toegewezen van een coördinaatruimte naar een andere. U kunt verschillende grafische transformaties op een weergaveobject uitvoeren door de eigenschappen van een object Matrix in te stellen, dat object Matrix toe te passen op de eigenschap
matrix
van een object Transform en vervolgens dat object Transform toe te passen als de eigenschap
transform
van het weergaveobject. Deze transformatiefuncties omvatten transleren (positie van
x
en
y
wijzigen), roteren, schalen en scheeftrekken.
Hoewel u een matrix kunt definiëren door de eigenschappen (
a
,
b
,
c
,
d
,
tx
,
ty
) van een object Matrix rechtstreeks aan te passen, is het gebruik van de methode
createBox()
eenvoudiger. Deze methode maakt gebruik van parameters waarmee u de effecten voor schalen, roteren en transleren voor de resulterende matrix rechtstreeks definieert. Met de volgende code wordt bijvoorbeeld een Matrix-object gemaakt waarmee het object horizontaal met 2,0 wordt geschaald, verticaal met 3,0 wordt geschaald, met 45 graden wordt geroteerd, en met 10 pixels naar rechts en 20 pixels naar beneden wordt verplaatst (getransleerd):
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);
U kunt de effecten voor schalen, roteren en transleren van een object Matrix ook aanpassen met de methoden
scale()
,
rotate()
en
translate()
. Deze methoden worden met de waarden van het bestaande Matrix-object gecombineerd. Met de volgende code wordt bijvoorbeeld een Matrix-object ingesteld waarmee een object met een factor 4 wordt geschaald en 60 graden wordt geroteerd, aangezien de methoden
scale()
en
rotate()
tweemaal worden aangeroepen:
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;
Als u een object Matrix wilt scheeftrekken, past u de eigenschap
b
of
c
ervan aan. Bij aanpassing van de eigenschap
b
wordt de matrix verticaal scheefgetrokken en bij aanpassing van de eigenschap
c
horizontaal. Met de volgende code wordt het Matrix-object
myMatrix
met een factor 2 verticaal scheefgetrokken:
var skewMatrix:Matrix = new Matrix();
skewMatrix.b = Math.tan(2);
myMatrix.concat(skewMatrix);
U kunt een matrixtransformatie toepassen op de eigenschap
transform
van een weergaveobject. Met de volgende code wordt bijvoorbeeld een matrixtransformatie toegepast op een weergaveobject met de naam
myDisplayObject
:
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;
Met de eerste regel wordt een object Matrix ingesteld op de bestaande transformatiematrix die door het weergaveobject
myDisplayObject
wordt gebruikt (de eigenschap
matrix
van de eigenschap
transformation
van het weergaveobject
myDisplayObject
). Op deze wijze hebben methoden van de klasse Matrix die u aanroept, een cumulatief effect op de huidige positie, schaal en rotatie van het weergaveobject.
Opmerking:
De klasse ColorTransform is ook onderdeel van het pakket flash.geometry. Met deze klasse stelt u de eigenschap
colorTransform
in van een object Transform. Omdat hierbij geen sprake is van een geometrische transformatie, wordt deze klasse niet in dit hoofdstuk besproken. Zie de
ColorTransform
-klassse in de
Naslaggids voor ActionScript 3.0 voor het Adobe Flash-platform
voor meer informatie.