Использование объектов 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 .