Använda Matrix-objekt

Flash Player 9 och senare, Adobe AIR 1.0 och senare

Klassen Matrix representerar en omformningsmatris som avgör hur punkter från en koordinatmodell ska kopplas till en annan. Du kan utföra olika grafiska omformningar på ett visningsobjekt genom att ställa in ett Matrix-objekts egenskaper och använda Matrix-objektet på ett Transform-objekts matrix -egenskap, och sedan använda Transform-objektet som visningsobjektets transform -egenskap. Dessa omformningsfunktioner är bland annat translation (omplacering av x och y ), rotation, skalning och skevning.

Det är enklare att använda metoden createBox() för att definiera en matris trots att det går genom att ändra egenskaperna ( a , b , c , d , tx , ty ) i ett Matrix-objekt. Den här metoden innehåller parametrar för att direkt definiera skalning, rotation och omformningseffekter för den resulterande matrisen. I följande exempel skapas ett Matrix-objekt som ändrar skalan på ett objekt vågrätt med 2,0 och lodrätt med 3,0, roterar det 45 grader samt flyttar (omformar) det 10 pixlar åt höger och 20 pixlar nedåt:

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

Du kan också ändra skala, rotation och omformningseffekter för Matrix-objekt med metoderna scale() , rotate() och translate() . Observera att dessa metoder kombinerar värdena för det befintliga Matrix-objektet. I nästa exempel anges ett Matrix-objekt som ändrar objektets skala med faktorn 4 och roterar det 60 grader genom att metoderna scale() och rotate() anropas två gånger:

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;

Om du vill skevningsomforma ett Matrix-objekt ska du ändra egenskapen b eller c . Genom ändring av egenskapen b skevar matrisen lodrätt medan ändring av egenskapen c får den att skeva vågrätt. I nästa exempel skevar Matrix-objektet myMatrix lodrätt med en faktor på 2:

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

Du kan tillämpa en matrisomformning på egenskapen transform för ett visningsobjekt. I nästa exempel tillämpas en matrisomformning på ett visningsobjekt med namnet 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;

I den första raden ställs ett matrisobjekt in för den aktuella matrisomformningen som används i visningsobjektet myDisplayObject (egenskapen matrix i egenskapen transformation i visningsobjektet myDisplayObject ). På det här sättet får de anropade metoderna för Matrix-klassen en kumulativ effekt på visningsobjektets befintliga plats, skala och rotation.

Obs! Klassen ColorTransform ingår också i flash.geometry-paketet. Den här klassen används för att ställa in egenskapen colorTransform för ett Transform-objekt. Eftersom ingen geometrisk omformning sker beskrivs den inte närmare här. Mer information finns i beskrivningen för klassen ColorTransform i Referenshandbok för ActionScript 3.0 i Adobe Flash-plattformen .