Использование объектов Matrix

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Класс 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.