Pakiet | flash.geom |
Klasa | public class Matrix |
Dziedziczenie | Matrix Object |
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
matrix
obiektu Transform, a następnie zastosować ten obiekt Transform jako właściwość transform
obiektu wyświetlanego. Do funkcji transformacji należy translacja (zmiana współrzędnych x i y), obrót, skalowanie i pochylenie.
Transformacje tego typu określane są zbiorczo mianem transformacji afinicznych. Transformacje afiniczne zachowują prostoliniowość i równoległość.
Aby zastosować macierz transformacji do obiektu wyświetlanego, należy utworzyć obiekt Transform, ustawić jego właściwość matrix
na macierz transformacji, a następnie ustawić właściwość transform
obiektu wyświetlanego na obiekt Transform. Obiekty Matrix są też używane jako parametry niektórych metod, takich jak:
- metoda
draw()
obiektu BitmapData; - metoda
beginBitmapFill()
,beginGradientFill()
lublineGradientStyle()
obiektu Graphics.
Obiekt macierzy transformacji jest macierzą 3 x 3 o następującej zawartości:
W tradycyjnych macierzach transformacji właściwości u
, v
i w
umożliwiają realizację dodatkowych funkcji. Klasa Matrix może operować wyłącznie w przestrzeni dwuwymiarowej, dlatego zawsze zakłada się, że właściwości u
i v
są równe 0,0, a właściwość w
jest równa 1,0. Efektywne wartości elementów macierzy są następujące:
Istnieje możliwość pobierania i ustawiania wartości wszystkich sześciu pozostałych właściwości obiektu Matrix: a
, b
, c
, d
, tx
i ty
.
Klasa Matrix obsługuje cztery główne typy transformacji: translację, skalowanie, obrót i pochylenie. Trzy z tych transformacji można uzyskiwać za pomocą metod wyspecjalizowanych, opisanych w poniższej tabeli:
Transformacja | Metoda | Wartości macierzy | Widoczny wynik | Opis |
---|---|---|---|---|
Translacja (przemieszczenie) |
translate(tx, ty)
| Przemieszcza obraz o tx pikseli w prawo i o ty pikseli w dół. | ||
Skalowanie |
scale(sx, sy)
| Zmienia rozmiar obrazu, mnożąc współrzędne poszczególnych pikseli przez sx na osi x i sy na osi y. | ||
Obrót |
rotate(q)
| Obraca obraz o kąt q wyrażony w radianach. | ||
Pochylenie lub ścinanie | Brak; należy ustawić właściwości b i c . | Progresywnie przesuwa obraz w kierunku równoległym do osi x lub y. Właściwość b obiektu Matrix reprezentuje tangens kąta pochylenia wzdłuż osi y; właściwość c obiektu Matrix reprezentuje tangens kąta pochylenia wzdłuż osi x. |
Każda funkcja transformacji zmienia bieżące właściwości macierzy, dlatego możliwe jest łączenie wielu transformacji. W tym celu wywołuje się więcej niż jedną funkcję transformacji przed zastosowaniem macierzy do docelowego obiektu wyświetlanego (za pośrednictwem właściwości transform
tego obiektu).
Wywoływanie metod obiektu Matrix jest możliwe dopiero po utworzeniu tego obiektu za pomocą konstruktora new Matrix()
.
Powiązane elementy interfejsu API
flash.geom.Transform
flash.display.BitmapData.draw()
flash.display.Graphics.beginBitmapFill()
flash.display.Graphics.beginGradientFill()
flash.display.Graphics.lineGradientStyle()
Właściwość | Zdefiniowane przez | ||
---|---|---|---|
a : Number
Wartość wpływająca na położenia pikseli wzdłuż osi x podczas skalowania lub obracania obrazu. | Matrix | ||
b : Number
Wartość wpływająca na położenia pikseli wzdłuż osi y podczas obracania lub pochylania obrazu. | Matrix | ||
c : Number
Wartość wpływająca na położenia pikseli wzdłuż osi x podczas obracania lub pochylania obrazu. | Matrix | ||
constructor : Object
Odwołanie do obiektu klasy lub funkcji konstruktora, dotyczące danej instancji obiektu. | Object | ||
d : Number
Wartość wpływająca na położenia pikseli wzdłuż osi y podczas skalowania lub obracania obrazu. | Matrix | ||
tx : Number
Wielkość przesunięcia każdego z punktów wzdłuż osi x. | Matrix | ||
ty : Number
Wielkość przesunięcia każdego z punktów wzdłuż osi y. | Matrix |
Metoda | Zdefiniowane przez | ||
---|---|---|---|
Tworzy nowy obiekt Matrix z określonymi parametrami. | Matrix | ||
Zwraca nowy obiekt Matrix będący klonem tej macierzy, z dokładną kopią zawartego obiektu. | Matrix | ||
Konkatenacja danej macierzy z macierzą bieżącą, z graficzną prezentacją wyniku operacji. | Matrix | ||
Kopiuje obiekt Vector3D do określonej kolumny wywołującego obiektu Matrix3D. | Matrix | ||
Kopiuje określoną kolumnę wywołującego obiektu Matrix do obiektu Vector3D. | Matrix | ||
Kopiuje wszystkie dane macierzy ze źródłowego obiektu Point do wywołującego obiektu Matrix. | Matrix | ||
Kopiuje obiekt Vector3D do określonego wiersza wywołującego obiektu Matrix. | Matrix | ||
Kopiuje określony wiersz wywołującego obiektu Matrix do obiektu Vector3D. | Matrix | ||
Zawiera parametry skalowania, obrotu i translacji. | Matrix | ||
createGradientBox(width:Number, height:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void
Tworzy macierz specjalną, oczekiwaną w metodach beginGradientFill() i lineGradientStyle() klasy Graphics. | Matrix | ||
Zwraca nowe współrzędne punktu o podanych współrzędnych początkowych (po dokonaniu przekształcenia). | Matrix | ||
Wskazuje, czy dla obiektu zdefiniowano określoną właściwość. | Object | ||
Ustawia wszystkie wartości macierzy, tak aby wymusić przekształcenie puste. | Matrix | ||
Stosuje do oryginalnej macierzy przekształcenie odwrotne. | Matrix | ||
Wskazuje, czy instancja klasy Object należy do łańcucha prototypów obiektu określonego jako parametr. | Object | ||
Wskazuje, czy określona właściwość istnieje i jest przeliczalna. | Object | ||
Stosuje przekształcenie obracające do obiektu Matrix. | Matrix | ||
Powala przeskalować obiekt Matrix. | Matrix | ||
Ustawia dostępność właściwości dynamicznej używanej w pętlach. | Object | ||
Ustawia określone wartości elementów obiektu Matrix.
| Matrix | ||
Zwraca ciąg reprezentujący obiekt — sformatowany zgodnie z konwencjami właściwymi dla ustawień regionalnych. | Object | ||
Zwraca wartość tekstową zawierającą listę właściwości obiektu Matrix. | Matrix | ||
Zwraca wynik zastosowania transformacji geometrycznej reprezentowanej przez obiekt Matrix do określonego punktu. | Matrix | ||
Dokonuje translacji macierzy wzdłuż osi x i y, zgodnie z parametrami dx i dy. | Matrix | ||
Zwraca pierwotną wartość dla określonego obiektu. | Object |
a | właściwość |
public var a:Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wartość wpływająca na położenia pikseli wzdłuż osi x podczas skalowania lub obracania obrazu.
Przykład ( Sposób korzystania z tego przykładu )
myMatrix
i ustawiana jest jego wartość a
.
import flash.geom.Matrix; var myMatrix:Matrix = new Matrix(); trace(myMatrix.a); // 1 myMatrix.a = 2; trace(myMatrix.a); // 2
b | właściwość |
public var b:Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wartość wpływająca na położenia pikseli wzdłuż osi y podczas obracania lub pochylania obrazu.
Przykład ( Sposób korzystania z tego przykładu )
myMatrix
i ustawiana jest jego wartość b
.
import flash.geom.Matrix; var myMatrix:Matrix = new Matrix(); trace(myMatrix.b); // 0 var degrees:Number = 30; var radians:Number = (degrees/180) * Math.PI; myMatrix.b = Math.tan(radians); trace(myMatrix.b); // 0.5773502691896257
c | właściwość |
public var c:Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wartość wpływająca na położenia pikseli wzdłuż osi x podczas obracania lub pochylania obrazu.
Przykład ( Sposób korzystania z tego przykładu )
myMatrix
i ustawiana jest jego wartość c
.
import flash.geom.Matrix; var myMatrix:Matrix = new Matrix(); trace(myMatrix.c); // 0 var degrees:Number = 30; var radians:Number = (degrees/180) * Math.PI; myMatrix.c = Math.tan(radians); trace(myMatrix.c); // 0.5773502691896257
d | właściwość |
public var d:Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Wartość wpływająca na położenia pikseli wzdłuż osi y podczas skalowania lub obracania obrazu.
Przykład ( Sposób korzystania z tego przykładu )
myMatrix
i ustawiana jest jego wartość d
.
import flash.geom.Matrix; var myMatrix:Matrix = new Matrix(); trace(myMatrix.d); // 1 myMatrix.d = 2; trace(myMatrix.d); // 2
tx | właściwość |
public var tx:Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Odległość, o jaką należy przesunąć każdy punkt wzdłuż osi x.
Przykład ( Sposób korzystania z tego przykładu )
myMatrix
i ustawiana jest jego wartość tx
.
import flash.geom.Matrix; var myMatrix:Matrix = new Matrix(); trace(myMatrix.tx); // 0 myMatrix.tx = 50; // 50 trace(myMatrix.tx);
ty | właściwość |
public var ty:Number
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Odległość, o jaką należy przesunąć każdy punkt wzdłuż osi y.
Przykład ( Sposób korzystania z tego przykładu )
myMatrix
i ustawiana jest jego wartość ty
.
import flash.geom.Matrix; var myMatrix:Matrix = new Matrix(); trace(myMatrix.ty); // 0 myMatrix.ty = 50; trace(myMatrix.ty); // 50
Matrix | () | Konstruktor |
public function Matrix(a:Number = 1, b:Number = 0, c:Number = 0, d:Number = 1, tx:Number = 0, ty:Number = 0)
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Tworzy nowy obiekt Matrix z określonymi parametrami. Oto organizacja właściwości w zapisie macierzowym:
Jeśli do konstruktora new Matrix()
nie zostaną przekazane żadne parametry, utworzy on macierz jednostkową z następującymi wartościami:
W zapisie macierzowym macierz jednostkowa ma następującą postać:
Parametrya:Number (default = 1 ) — Wartość wpływająca na położenia pikseli wzdłuż osi x podczas skalowania lub obracania obrazu.
| |
b:Number (default = 0 ) — Wartość wpływająca na położenia pikseli wzdłuż osi y podczas obracania lub pochylania obrazu.
| |
c:Number (default = 0 ) — Wartość wpływająca na położenia pikseli wzdłuż osi x podczas obracania lub pochylania obrazu.
| |
d:Number (default = 1 ) — Wartość wpływająca na położenia pikseli wzdłuż osi y podczas skalowania lub obracania obrazu.
| |
tx:Number (default = 0 ) — Odległość, o jaką należy przesunąć każdy punkt wzdłuż osi x.
| |
ty:Number (default = 0 ) — Odległość, o jaką należy przesunąć każdy punkt wzdłuż osi y.
|
Przykład ( Sposób korzystania z tego przykładu )
matrix_1
bez przekazywania parametrów do konstruktora Matrix()
oraz macierz matrix_2
z przekazaniem parametrów. Należy zwrócić uwagę, że macierz matrix_1
, która została utworzona bez parametrów, jest macierzą jednostkową z wartościami a
=1, b
=0, c
=0, d
=1, tx
=0, ty
=0.
import flash.geom.Matrix; var matrix_1:Matrix = new Matrix(); trace(matrix_1); // (a=1, b=0, c=0, d=1, tx=0, ty=0) var matrix_2:Matrix = new Matrix(1, 2, 3, 4, 5, 6); trace(matrix_2); // (a=1, b=2, c=3, d=4, tx=5, ty=6)
clone | () | metoda |
concat | () | metoda |
public function concat(m:Matrix):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Konkatenacja danej macierzy z macierzą bieżącą, z graficzną prezentacją wyniku operacji. W kategoriach matematycznych konkatenacja dwóch macierzy jest równoznaczna z połączeniem ich w wyniku mnożenia macierzy.
Na przykład, jeśli macierz m1
skaluje obiekt ze współczynnikiem cztery, a macierz m2
obraca obiekt o 1,5707963267949 radiana (Math.PI/2
), to m1.concat(m2)
przetransformuje m1
w macierz, która skaluje obiekt ze współczynnikiem cztery i obraca go o Math.PI/2
radiana.
Ta metoda zastępuje macierz źródłową macierzą po konkatenacji. Aby dokonać konkatenacji dwóch macierzy bez zmiany macierzy źródłowych, należy najpierw skopiować macierz źródłową za pomocą metody clone()
, tak jak przedstawiono to w sekcji przykładów dla klasy.
Parametry
m:Matrix — Matrix, która ma być skonkatenowana z macierzą źródłową.
|
copyColumnFrom | () | metoda |
public function copyColumnFrom(column:uint, vector3D:Vector3D):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Kopiuje obiekt Vector3D do określonej kolumny wywołującego obiektu Matrix3D.
Parametry
column:uint — Kolumna, z której należy skopiować dane.
| |
vector3D:Vector3D — Obiekt Vector3D, z którego należy skopiować dane.
|
copyColumnTo | () | metoda |
public function copyColumnTo(column:uint, vector3D:Vector3D):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Kopiuje określoną kolumnę wywołującego obiektu Matrix do obiektu Vector3D. Nie zostanie zmieniony element „w” obiektu Vector3D.
Parametry
column:uint — Kolumna, z której należy skopiować dane.
| |
vector3D:Vector3D — Obiekt Vector3D, z którego należy skopiować dane.
|
copyFrom | () | metoda |
public function copyFrom(sourceMatrix:Matrix):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Kopiuje wszystkie dane macierzy ze źródłowego obiektu Point do wywołującego obiektu Matrix.
Parametry
sourceMatrix:Matrix — Obiekt Matrix, z którego należy skopiować dane.
|
copyRowFrom | () | metoda |
public function copyRowFrom(row:uint, vector3D:Vector3D):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Kopiuje obiekt Vector3D do określonego wiersza wywołującego obiektu Matrix.
Parametry
row:uint — Wiersz, z którego należy skopiować dane.
| |
vector3D:Vector3D — Obiekt Vector3D, z którego należy skopiować dane.
|
copyRowTo | () | metoda |
public function copyRowTo(row:uint, vector3D:Vector3D):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Kopiuje określony wiersz wywołującego obiektu Matrix do obiektu Vector3D. Nie zostanie zmieniony element „w” obiektu Vector3D.
Parametry
row:uint — Wiersz, z którego należy skopiować dane.
| |
vector3D:Vector3D — Obiekt Vector3D, z którego należy skopiować dane.
|
createBox | () | metoda |
public function createBox(scaleX:Number, scaleY:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zawiera parametry skalowania, obrotu i translacji. Po zastosowaniu do macierzy ustawia jej wartości na podstawie tych parametrów.
Metoda createBox()
umożliwia uzyskanie takiej samej macierzy, jaką uzyskalibyśmy po zastosowaniu kolejno metod identity()
, rotate()
, scale()
i translate()
. Na przykład wywołanie mat1.createBox(2,2,Math.PI/4, 100, 100)
odniesie ten sam skutek, co:
import flash.geom.Matrix; var mat1:Matrix = new Matrix(); mat1.identity(); mat1.rotate(Math.PI/4); mat1.scale(2,2); mat1.translate(10,20);
Parametry
scaleX:Number — Współczynnik skalowania poziomego.
| |
scaleY:Number — Współczynnik skalowania pionowego.
| |
rotation:Number (default = 0 ) — Stopień obrotu w radianach.
| |
tx:Number (default = 0 ) — Liczba pikseli, o jaką należy przemieścić obiekt w prawo wzdłuż osi x.
| |
ty:Number (default = 0 ) — Liczba pikseli, o jaką należy przemieścić obiekt w dół wzdłuż osi y.
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
myMatrix
ustawiane są przez wywołanie metody createBox()
.
package { import flash.display.Shape; import flash.display.Sprite; import flash.geom.Matrix; import flash.geom.Transform; public class Matrix_createBox extends Sprite { public function Matrix_createBox() { var myMatrix:Matrix = new Matrix(); trace(myMatrix.toString()); // (a=1, b=0, c=0, d=1, tx=0, ty=0) myMatrix.createBox(1, 2, Math.PI/4, 50, 100); trace(myMatrix.toString()); // (a=0.7071067811865476, b=1.414213562373095, c=-0.7071067811865475, // d=1.4142135623730951, tx=50, ty=100) var rectangleShape:Shape = createRectangle(20, 80, 0xFF0000); addChild(rectangleShape); var rectangleTrans:Transform = new Transform(rectangleShape); rectangleTrans.matrix = myMatrix; } public function createRectangle(w:Number, h:Number, color:Number):Shape { var rect:Shape = new Shape(); rect.graphics.beginFill(color); rect.graphics.drawRect(0, 0, w, h); addChild(rect); return rect; } } }
createGradientBox | () | metoda |
public function createGradientBox(width:Number, height:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Tworzy macierz specjalną, oczekiwaną w metodach beginGradientFill()
i lineGradientStyle()
klasy Graphics. Szerokość i wysokość są skalowane zgodnie z parą scaleX
/scaleY
, a wartości tx
/ty
są modyfikowane o połowę szerokości i wysokości.
Na przykład weźmy pod uwagę gradient o następujących cechach:
GradientType.LINEAR
- Dwa kolory, zielony i niebieski, z tablicami współczynników ustawionymi na
[0, 255]
SpreadMethod.PAD
InterpolationMethod.LINEAR_RGB
Na poniższych ilustracjach przedstawiono gradienty, w których macierz zdefiniowano za pomocą metody createGradientBox()
z różnymi parametrami:
Ustawienia metody createGradientBox() | Wynikowy gradient |
---|---|
width = 25; height = 25; rotation = 0; tx = 0; ty = 0; | |
width = 25; height = 25; rotation = 0; tx = 25; ty = 0; | |
width = 50; height = 50; rotation = 0; tx = 0; ty = 0; | |
width = 50; height = 50; rotation = Math.PI / 4; // 45 degrees tx = 0; ty = 0; |
Parametry
width:Number — Szerokość prostokąta wypełnionego gradientowo.
| |
height:Number — Wysokość prostokąta wypełnionego gradientowo.
| |
rotation:Number (default = 0 ) — Stopień obrotu w radianach.
| |
tx:Number (default = 0 ) — Odległość w pikselach, o jaką należy przemieścić obiekt w prawo wzdłuż osi x. Ta wartość jest modyfikowana o połowę wartości parametru width .
| |
ty:Number (default = 0 ) — Odległość w pikselach, o jaką należy przemieścić obiekt w dół wzdłuż osi y. Ta wartość jest modyfikowana o połowę wartości parametru height .
|
Powiązane elementy interfejsu API
Przykład ( Sposób korzystania z tego przykładu )
myMatrix
ustawiane są poprzez wywołanie jej metody createBox()
.
package { import flash.display.GradientType; import flash.display.Sprite; import flash.geom.Matrix; public class Matrix_createGradientBox extends Sprite { public function Matrix_createGradientBox() { var myMatrix:Matrix = new Matrix(); trace(myMatrix.toString()); // (a=1, b=0, c=0, d=1, tx=0, ty=0) myMatrix.createGradientBox(200, 200, 0, 50, 50); trace(myMatrix.toString()); // (a=0.1220703125, b=0, c=0, d=0.1220703125, tx=150, ty=150) var colors:Array = [0xFF0000, 0x0000FF]; var alphas:Array = [100, 100]; var ratios:Array = [0, 0xFF]; this.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, myMatrix); this.graphics.drawRect(0, 0, 300, 200); } } }
deltaTransformPoint | () | metoda |
public function deltaTransformPoint(point:Point):Point
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zwraca nowe współrzędne punktu o podanych współrzędnych początkowych (po dokonaniu przekształcenia). W przeciwieństwie do standardowej transformacji realizowanej przez metodę transformPoint()
, transformacja realizowana przez metodę deltaTransformPoint()
nie uwzględnia parametrów translacji tx
i ty
.
Parametry
point:Point — Punkt, dla którego chcemy uzyskać wynik transformacji opisanej przez macierz.
|
Point — Punkt będący wynikiem zastosowania transformacji opisanej przez macierz.
|
identity | () | metoda |
public function identity():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Ustawia wszystkie wartości macierzy, tak aby wymusić przekształcenie puste. Obiekt przetransformowany poprzez zastosowanie macierzy jednostkowej będzie identyczny z oryginalnym.
Po wywołaniu metody identity()
macierz wynikowa ma następujące właściwości : a
=1, b
=0, c
=0, d
=1, tx
=0, ty
=0.
W zapisie macierzowym macierz jednostkowa ma następującą postać:
invert | () | metoda |
public function invert():void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Stosuje do oryginalnej macierzy przekształcenie odwrotne. W celu wycofania transformacji dokonanych poprzez zastosowanie macierzy, można zastosować do obiektu macierz odwróconą.
Przykład ( Sposób korzystania z tego przykładu )
halfScaleMatrix
poprzez wywołanie metody invert()
obiektu doubleScaleMatrix
. Następnie przykładowy program demonstruje fakt, że dwie macierze są wzajemnie odwrócone, tj. wzajemnie cofają swoje transformacje. W tym celu tworzona jest macierz originalAndInverseMatrix
równa macierzy noScaleMatrix
.
package { import flash.display.Shape; import flash.display.Sprite; import flash.geom.Matrix; import flash.geom.Transform; public class Matrix_invert extends Sprite { public function Matrix_invert() { var rect0:Shape = createRectangle(20, 80, 0xFF0000); var rect1:Shape = createRectangle(20, 80, 0x00FF00); var rect2:Shape = createRectangle(20, 80, 0x0000FF); var rect3:Shape = createRectangle(20, 80, 0x000000); var trans0:Transform = new Transform(rect0); var trans1:Transform = new Transform(rect1); var trans2:Transform = new Transform(rect2); var trans3:Transform = new Transform(rect3); var doubleScaleMatrix:Matrix = new Matrix(2, 0, 0, 2, 0, 0); trans0.matrix = doubleScaleMatrix; trace(doubleScaleMatrix.toString()); // (a=2, b=0, c=0, d=2, tx=0, ty=0) var noScaleMatrix:Matrix = new Matrix(1, 0, 0, 1, 0, 0); trans1.matrix = noScaleMatrix; rect1.x = 50; trace(noScaleMatrix.toString()); // (a=1, b=0, c=0, d=1, tx=0, ty=0) var halfScaleMatrix:Matrix = doubleScaleMatrix.clone(); halfScaleMatrix.invert(); trans2.matrix = halfScaleMatrix; rect2.x = 100; trace(halfScaleMatrix.toString()); // (a=0.5, b=0, c=0, d=0.5, tx=0, ty=0) var originalAndInverseMatrix:Matrix = doubleScaleMatrix.clone(); originalAndInverseMatrix.concat(halfScaleMatrix); trans3.matrix = originalAndInverseMatrix; rect3.x = 150; trace(originalAndInverseMatrix.toString()); // (a=1, b=0, c=0, d=1, tx=0, ty=0) } public function createRectangle(w:Number, h:Number, color:Number):Shape { var rect:Shape = new Shape(); rect.graphics.beginFill(color); rect.graphics.drawRect(0, 0, w, h); addChild(rect); return rect; } } }
rotate | () | metoda |
public function rotate(angle:Number):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Powala obrócić obiekt Matrix.
Metoda rotate()
modyfikuje właściwości a
, b
, c
, i d
obiektu Matrix. W zapisie macierzowym operacja ta jest równoważna konkatenacji bieżącej macierzy z następującą:
Parametry
angle:Number — Kąt obrotu w radianach.
|
scale | () | metoda |
public function scale(sx:Number, sy:Number):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Powala przeskalować obiekt Matrix. Wartości na osi x są mnożone przez sx
, a wartości na osi y są mnożone przez sy
.
Metoda scale()
modyfikuje właściwości a
i d
obiektu Matrix. W zapisie macierzowym operacja ta jest równoważna konkatenacji bieżącej macierzy z następującą:
Parametry
sx:Number — Mnożnik skalowania obiektu wzdłuż osi x.
| |
sy:Number — Mnożnik skalowania obiektu wzdłuż osi y.
|
setTo | () | metoda |
public function setTo(aa:Number, ba:Number, ca:Number, da:Number, txa:Number, tya:Number):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | Flash Player 11, AIR 3.0, Flash Lite 4 |
Ustawia określone wartości elementów obiektu Matrix.
Parametry
aa:Number — Wartości, które należy ustawić dla macierzy.
| |
ba:Number | |
ca:Number | |
da:Number | |
txa:Number | |
tya:Number |
toString | () | metoda |
transformPoint | () | metoda |
public function transformPoint(point:Point):Point
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Zwraca wynik zastosowania przekształcenia geometrycznego reprezentowanego przez obiekt Matrix do określonego punktu.
Parametry
point:Point — Punkt, dla którego chcemy uzyskać wynik transformacji opisanej przez obiekt Matrix.
|
Point — Punkt będący wynikiem zastosowania transformacji reprezentowanej przez obiekt Matrix.
|
translate | () | metoda |
public function translate(dx:Number, dy:Number):void
Wersja języka: | ActionScript 3.0 |
Wersje środowiska wykonawczego: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Dokonuje translacji macierzy wzdłuż osi x i y, zgodnie z parametrami dx
i dy
.
Parametry
dx:Number — Przemieszczenie w prawo wzdłuż osi x w pikselach.
| |
dy:Number — Przemieszczenie w dół wzdłuż osi y w pikselach.
|
MatrixExample
do utworzenia dużego prostokąta z wypełnieniem gradientowym. Proces przebiega w następujący sposób:
- Aplikacja tworzy nowy obiekt Matrix
myMatrix
i za pomocą metodytrace()
wyświetla domyślne wartości właściwości dla obiektumyMatrix
. - Aplikacja wywołuje metodę
createGradientBox()
z parametramiwidth
iheight
ustawionymi na 200 pikseli, bez obrotu i z przesunięciem wzdłuż osi x oraz y ustawionym na 50 pikseli. - Aplikacja ponownie wyświetla obiekt
myMatrix
, aby uwidocznić zmiany po wywołaniu metodycreateGradientBox()
. - Aplikacja konfiguruje trzy zmienne sterujące sposobem wypełniania gradientowego:
colors
: Ustawia zakres kolorów gradientu między litym czerwonym a litym niebieskim.alphas
: Ustawia lite krycie.ratios
: Ustawia taki sam rozkład kolorów na identyczny dla czerwonego i niebieskiego.
- Aplikacja wywołuje metodę graficzną
beginGradientFill()
, która operuje na obiekciemyMatrix
, i wywołuje metodęlineTo()
, co powoduje gradientowe wypełnienie prostokąta.
package { import flash.geom.Matrix; import flash.display.Sprite; import flash.display.GradientType; public class MatrixExample extends Sprite { public function MatrixExample() { var myMatrix:Matrix = new Matrix(); trace(myMatrix.toString()); // (a=1, b=0, c=0, d=1, tx=0, ty=0) myMatrix.createGradientBox(200, 200, 0, 50, 50); trace(myMatrix.toString()); // (a=0.1220703125, b=0, c=0, d=0.1220703125, tx=150, ty=150) var colors:Array = [0xFF0000, 0x0000FF]; var alphas:Array = [1, 1]; var ratios:Array = [0, 0xFF]; graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, myMatrix); graphics.lineTo(0, 300); graphics.lineTo(300, 300); graphics.lineTo(300, 0); graphics.lineTo(0, 0); } } }
Tue Jun 12 2018, 12:06 PM Z