Класс
Matrix
представляет матрицу преобразования, определяющую способ сопоставления точек из одного пространства координат с точками в другом пространстве координат. Можно выполнять различные графические преобразования экранного объекта путем задания свойств объекта Matrix, применения этого объекта Matrix к свойству
matrix
объекта Transform и последующего применения объекта Transform в качестве свойства
transform
к экранному объекту. Эти функции преобразования включают перемещение (изменение положения осей
x
и
y
), поворот, масштабирование и наклон.
Несмотря на то, что матрицу можно определить непосредственно, задав свойства объекта Matrix (
a
,
b
,
c
,
d
,
tx
,
ty
), легче использовать для этого метод
createBox()
. Этот метод включает параметры, позволяющие непосредственно задавать эффекты масштабирования поворота и перемещения для результирующей матрицы. Например, следующий код позволяет создать объект Matrix, который выполняет масштабирование объекта по вертикали с коэффициентом 2 и по горизонтали с коэффициентом 3, поворот на 45°, перемещение на 10 пикселов направо и на 20 пикселов вниз:
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);
Используя методы
scale()
,
rotate()
и
translate()
, можно также откорректировать эффекты масштабирования, поворота и перемещения объекта Matrix. Обратите внимание, что в этих методах используется комбинация данных со значениями существующего объекта Matrix. Например, следующий код задает объект Matrix, который будет включать эффекты масштабирования с коэффициентом 4 и поворота на 60°, поскольку методы
scale()
и
rotate()
использованы дважды:
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;
Для применения преобразования наклона к объекту Matrix необходимо задать его свойства
b
или
c
. Свойство
b
задает вертикальный наклон матрицы, свойство
c
задает горизонтальный наклон. Следующий код позволяет наклонить матричный объект
myMatrix
по вертикали с коэффициентом 2:
var skewMatrix:Matrix = new Matrix();
skewMatrix.b = Math.tan(2);
myMatrix.concat(skewMatrix);
Матричное преобразование можно применить к свойству
transform
экранного объекта. Например, следующий код позволяет применить матричное преобразование к экранному объекту с именем
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;
Первая строка задает объект Matrix в существующем матричном преобразовании как экранный объект
myDisplayObject
(свойство
matrix
свойства
transformation
экранного объекта
myDisplayObject
). Таким образом, используемые методы класса Matrix имеют кумулятивный эффект на существующие положение, масштаб и поворот экранного объекта.
Примечание.
Класс ColorTransform также включен в пакет flash.geometry. Этот класс используется для задания свойства
colorTransform
для объекта Transform. Данный класс не имеет отношения к каким-либо геометрическим преобразованиям, поэтому он здесь подробно не рассматривается. Дополнительные сведения см. в описании класса
ColorTransform
в
cправочнике ActionScript® 3.0 для платформы Adobe® Flash® Platform
.