Пакетflash.geom
Классpublic class Matrix
НаследованиеMatrix Inheritance Object

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Класс Matrix представляет матрицу преобразования, определяющую способ сопоставления точек из одного пространства координат с точками в другом пространстве координат. Можно выполнять различные графические преобразования экранного объекта путем задания свойств объекта Matrix, применения этого объекта Matrix к свойству matrix объекта Transform и последующего применения объекта Transform в качестве свойства transform к экранному объекту. Эти функции преобразования включают перемещение (изменение положения осей x и y), поворот, масштабирование и наклон.

Все эти преобразования называются аффинные преобразования. При аффинных преобразованиях сохраняется прямолинейность линий, поэтому параллельные линии остаются параллельными.

Чтобы применить матрицу преобразования к экранному объекту, необходимо создать объект Transform, настроить его свойство matrix для матрицы преобразования, а затем настроить свойство transform экранного объекта для объекта Transform. Объекты матрицы также используются как параметры в некоторых методах, например:

Объект матрицы преобразования является матрицей размерностью 3x3 со следующим содержимым:

Свойства класса матрицы в матричном представлении

В традиционных матрицах преобразования свойства u, v и w предоставляют дополнительные возможности. Класс Matrix можно использовать только в двумерном пространстве, поэтому при его использовании всегда подразумевается, что значения свойств u и v равны 0,0, а значение свойства w равно 1,0. Эффективными значениями матрицы являются следующие:

Свойства класса матрицы в матричном представлении, отображающие предполагаемые значения u, v и w

Можно получить и настроить значения остальных шести свойств объекта Matrix: a, b, c, d, tx и ty.

Класс Matrix поддерживает четыре основных типа преобразований: перемещение, масштабирование, поворот и наклон. С помощью специальных методов можно настроить три из перечисленных преобразования, как описано в следующей таблице:

ПреобразованиеМетодЗначения матрицыОтображаемый результатОписание
Перемещение (перестановка) translate(tx, ty) Матричная запись параметров метода перемещения Иллюстрация эффектов метода перемещения Перемещение пикселов tx изображения вправо, а пикселов ty вниз.
Масштабирование scale(sx, sy) Матричная запись параметров метода масштабирования Иллюстрация эффектов метода масштабирования Изменение размера изображения, умножение расположения каждого пиксела на величину sx по оси x и sy по оси y.
Поворот rotate(q) Матричная запись свойств метода поворота Иллюстрация эффектов метода поворота Поворот изображения на угол q, который измеряется в радианах.
Наклон или сдвиг Нет; необходимо настроить свойства b и c Матричная запись свойств функции наклона Иллюстрация эффектов функции наклона Постепенный сдвиг изображения параллельно оси x или y. Свойство b объекта Matrix представляет тангенс угла наклона по оси y; свойство c объекта Matrix представляет тангенс угла наклона по оси x.

Каждая функция преобразования изменяет текущие свойства матрицы, поэтому можно эффективно комбинировать несколько преобразований. Для этого необходимо вызвать несколько функций преобразования перед применением матрицы к целевому экранному объекту (при использовании свойства transform этого экранного объекта).

Используйте конструктор new Matrix() для создания объекта Matrix перед вызовом методов объекта Matrix.

Посмотреть примеры

См. также

flash.display.DisplayObject.transform
flash.geom.Transform
flash.display.BitmapData.draw()
flash.display.Graphics.beginBitmapFill()
flash.display.Graphics.beginGradientFill()
flash.display.Graphics.lineGradientStyle()


Общедоступные свойства
 СвойствоОпределено
  a : Number
Значение, от которого зависит размещение пикселов вдоль оси x при масштабировании или повороте изображения.
Matrix
  b : Number
Значение, от которого зависит размещение пикселов вдоль оси y при повороте или наклоне изображения.
Matrix
  c : Number
Значение, от которого зависит размещение пикселов вдоль оси x при повороте или наклоне изображения.
Matrix
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  d : Number
Значение, от которого зависит размещение пикселов вдоль оси y при масштабировании или повороте изображения.
Matrix
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
  tx : Number
Расстояние, на которое перемещается каждая точка вдоль оси x.
Matrix
  ty : Number
Расстояние, на которое перемещается каждая точка вдоль оси y.
Matrix
Общедоступные методы
 МетодОпределено
  
Matrix(a:Number = 1, b:Number = 0, c:Number = 0, d:Number = 1, tx:Number = 0, ty:Number = 0)
Создает новый объект Matrix с заданными параметрами.
Matrix
  
Возвращает новый объект Matrix, который является клоном данной матрицы с точной копией содержащегося в ней объекта.
Matrix
  
Сцепляет матрицу с текущей матрицей, фактически объединяя геометрические искажения двух матриц.
Matrix
  
createBox(scaleX:Number, scaleY:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void
Включает параметры для масштабирования, поворота и перемещения.
Matrix
  
createGradientBox(width:Number, height:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void
Создает особый стиль матрицы, ожидаемый методами beginGradientFill() и lineGradientStyle() класса Graphics.
Matrix
  
Для точки в пространстве координат до преобразования возвращает ее координаты после преобразования.
Matrix
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
  
Задает каждому свойству матрицы значение, приводящее к нулевому преобразованию.
Matrix
  
Выполняет обратное преобразование исходной матрицы.
Matrix
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
  
Применяет преобразование поворотом к объекту Matrix.
Matrix
  
Применяет преобразование масштабированием к объекту Matrix.
Matrix
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
  
Возвращает текстовое значение, содержащее список свойств объекта Matrix.
Matrix
  
Возвращает результат применения геометрического преобразования, представленного объектом Matrix в заданной точке.
Matrix
  
Перемещение матрицы вдоль осей x и y, как задано параметрами dx и dy.
Matrix
 Inherited
Возвращает элементарное значение заданного объекта.
Object
Сведения о свойстве
aсвойство
public var a:Number

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Значение, от которого зависит размещение пикселов вдоль оси x при масштабировании или повороте изображения.


Пример
В следующем примере показано создание объекта Matrix myMatrix и настройка его значения a.
     import flash.geom.Matrix;
     
     var myMatrix:Matrix = new Matrix();
     trace(myMatrix.a);  // 1
     
     myMatrix.a = 2;
     trace(myMatrix.a);  // 2
     
bсвойство 
public var b:Number

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Значение, от которого зависит размещение пикселов вдоль оси y при повороте или наклоне изображения.


Пример
В следующем примере показано создание объекта Matrix myMatrix и настройка его значения 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свойство 
public var c:Number

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Значение, от которого зависит размещение пикселов вдоль оси x при повороте или наклоне изображения.


Пример
В следующем примере показано создание объекта Matrix myMatrix и настройка его значения 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свойство 
public var d:Number

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Значение, от которого зависит размещение пикселов вдоль оси y при масштабировании или повороте изображения.


Пример
В следующем примере показано создание объекта Matrix myMatrix и настройка его значения d.
     import flash.geom.Matrix;
     
     var myMatrix:Matrix = new Matrix();
     trace(myMatrix.d);  // 1
     
     myMatrix.d = 2;
     trace(myMatrix.d);  // 2
     
txсвойство 
public var tx:Number

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Расстояние, на которое перемещается каждая точка вдоль оси x.


Пример
В следующем примере показано создание объекта Matrix myMatrix и настройка его значения tx.
 
     import flash.geom.Matrix;
     
     var myMatrix:Matrix = new Matrix();
     trace(myMatrix.tx);  // 0
     
     myMatrix.tx = 50;  // 50
     trace(myMatrix.tx);
     
tyсвойство 
public var ty:Number

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Расстояние, на которое перемещается каждая точка вдоль оси y.


Пример
В следующем примере показано создание объекта Matrix myMatrix и настройка его значения ty.
   
     import flash.geom.Matrix;
     
     var myMatrix:Matrix = new Matrix();
     trace(myMatrix.ty);  // 0
     
     myMatrix.ty = 50;
     trace(myMatrix.ty);  // 50
     
Сведения о конструкторе
Matrix()Конструктор
public function Matrix(a:Number = 1, b:Number = 0, c:Number = 0, d:Number = 1, tx:Number = 0, ty:Number = 0)

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Создает новый объект Matrix с заданными параметрами. В матричном представлении свойства упорядочиваются следующим образом:

Свойства класса матрицы в матричном представлении, отображающие предполагаемые значения u, v и w

Если в конструкторе new Matrix() не указаны параметры, он создает единичную матрицу со следующими значениями:

a = 1b = 0c = 0d = 1tx = 0ty = 0

В матричном представлении единичная матрица имеет следующий вид:

Свойства класса матрицы в матричном представлении

Параметры
a:Number (default = 1) — Значение, от которого зависит размещение пикселов вдоль оси x при масштабировании или повороте изображения.
 
b:Number (default = 0) — Значение, от которого зависит размещение пикселов вдоль оси y при повороте или наклоне изображения.
 
c:Number (default = 0) — Значение, от которого зависит размещение пикселов вдоль оси x при повороте или наклоне изображения.
 
d:Number (default = 1) — Значение, от которого зависит размещение пикселов вдоль оси y при масштабировании или повороте изображения.
 
tx:Number (default = 0) — Расстояние, на которое перемещается каждая точка вдоль оси x.
 
ty:Number (default = 0) — Расстояние, на которое перемещается каждая точка вдоль оси y.

Пример
В следующем примере матрица matrix_1 создается без передачи параметров в конструктор Matrix(), а матрица matrix_2 с передачей параметров. Обратите внимание, что матрица matrix_1, которая была создана без параметров, является единичной матрицей со значениями 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()метод
public function clone():Matrix

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Возвращает новый объект Matrix, который является клоном данной матрицы с точной копией содержащегося в ней объекта.

Возвращает
Matrix — Объект Matrix.
concat()метод 
public function concat(m:Matrix):void

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Сцепляет матрицу с текущей матрицей, фактически объединяя геометрические искажения двух матриц. В математическом представлении сцепление двух матриц равнозначно сложению матриц с использованием умножения.

Например, если матрица m1 масштабирует объект с использованием коэффициента, равного четырем, а матрица m2 поворачивает объект на 1,5707963267949 радиан (Math.PI/2), то m1.concat(m2) преобразует m1 в матрицу, которая выполняет масштабирование объекта с коэффициентом, равным четырем, и поворачивает объект на Math.PI/2 радиан.

Этот метод заменяет исходную матрицу сцепленной матрицей. Если необходимо выполнить сцепление двух матриц без изменения этих двух исходных матриц, сначала скопируйте исходную матрицу с помощью метода clone(), как показано в разделе примеров классов.

Параметры

m:Matrix — Матрица, которая будет сцеплена с исходной матрицей.

createBox()метод 
public function createBox(scaleX:Number, scaleY:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Включает параметры для масштабирования, поворота и перемещения. При применении к матрице задает матричные значения на основе этих параметров.

С помощью метода createBox() можно получить такую же матрицу, как и с помощью последовательного применения методов identity(), rotate(), scale() и translate(). Например, запись mat1.createBox(2,2,Math.PI/4, 100, 100) аналогичная следующей записи:

     import flash.geom.Matrix;
          var mat1:Matrix = new Matrix();
     mat1.identity();
     mat1.rotate(Math.PI/4);
     mat1.scale(2,2);
     mat1.translate(10,20);
     

Параметры

scaleX:Number — Коэффициент масштабирования по горизонтали.
 
scaleY:Number — Коэффициент масштабирования по вертикали.
 
rotation:Number (default = 0) — Угол поворота (в радианах).
 
tx:Number (default = 0) — Число пикселов для перемещения вправо вдоль оси x.
 
ty:Number (default = 0) — Число пикселов для перемещения вниз вдоль оси y.

См. также


Пример

В следующем примере значения масштаба по оси x, масштаба по оси y, поворота, расположения по оси x и y объекта myMatrix задаются вызовом его метода 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=100, ty=200)
             
             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()метод 
public function createGradientBox(width:Number, height:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Создает особый стиль матрицы, ожидаемый методами beginGradientFill() и lineGradientStyle() класса Graphics. Ширина и высота масштабируются до пары scaleX/scaleY, а значения tx/ty являются коррекцией с половинными значениями ширины и высоты.

Например, рассмотрим градиент со следующими характеристиками:

В следующем примере показаны градиенты, в которых матрица была определена с помощью метода createGradientBox() с различными настройками параметров:

Параметры createGradientBox()Итоговый градиент
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°
     tx = 0; 
     ty = 0;
итоговый линейный градиент

Параметры

width:Number — Ширина градиентного прямоугольника.
 
height:Number — Высота градиентного прямоугольника.
 
rotation:Number (default = 0) — Угол поворота (в радианах).
 
tx:Number (default = 0) — Расстояние перемещения (в пикселах) вправо вдоль оси x. Это значение является коррекцией с половинным значением параметра width.
 
ty:Number (default = 0) — Расстояние перемещения (в пикселах) вниз по оси y. Это значение является коррекцией с половинным значением параметра height.

См. также


Пример

В следующем примере значения масштаба по оси x, масштаба по оси y, поворота, расположения по оси x и y объекта myMatrix задаются вызовом его метода 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()метод 
public function deltaTransformPoint(point:Point):Point

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Для точки в пространстве координат до преобразования возвращает ее координаты после преобразования. В отличие от стандартного преобразования, применяемого с помощью метода transformPoint(), в преобразовании методом deltaTransformPoint() не учитываются параметры перемещения tx и ty.

Параметры

point:Point — Точка, для которой необходимо получить результат преобразования матрицы.

Возвращает
Point — Точка, полученная в результате применения преобразования матрицы.
identity()метод 
public function identity():void

Версия продукта: Lite 2.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Задает каждому свойству матрицы значение, приводящее к нулевому преобразованию. Объект, преобразованный с применением единичной матрицы, идентичен исходному объекту.

После вызова метода identity() в получившейся в результате матрице записаны следующие свойства: a=1, b=0, c=0, d=1, tx=0, ty=0.

В матричном представлении единичная матрица имеет следующий вид:

Свойства класса матрицы в матричном представлении

invert()метод 
public function invert():void

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Выполняет обратное преобразование исходной матрицы. Можно применить обратную матрицу к объекту для отмены преобразования, выполненного при применении исходной матрицы.


Пример

В следующем примере создается объект halfScaleMatrix с помощью вызова метода invert() объекта doubleScaleMatrix. Также показано, что две матрицы являются обратными по отношению друг к другу — матрицы, которые отменяют все преобразования, выполненные противоположной матрицей — путем создания объекта originalAndInverseMatrix, который равен объекту 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()метод 
public function rotate(angle:Number):void

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Применяет преобразование поворотом к объекту Matrix.

Метод rotate() изменяет свойства a, b, c и d объекта Matrix. В матричном представлении это действие равнозначно сцеплению текущей матрицы со следующими значениями:

Матричная запись параметров метода масштабирования

Параметры

angle:Number — Угол поворота (в радианах).

scale()метод 
public function scale(sx:Number, sy:Number):void

Версии среды выполнения: AIR 1.0, Flash Player 9

Применяет преобразование масштабированием к объекту Matrix. Ось x умножается на значение sx, а ось y — на значение sy.

Метод scale() изменяет свойства a и d объекта Matrix. В матричном представлении это действие равнозначно сцеплению текущей матрицы со следующей матрицей:

Матричная запись параметров метода масштабирования

Параметры

sx:Number — Коэффициент, используемый для масштабирования объекта вдоль оси x.
 
sy:Number — Коэффициент, используемый для масштабирования объекта вдоль оси y.

toString()метод 
public function toString():String

Язык версии : ActionScript 3.0
Версия продукта: Lite 2.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Возвращает текстовое значение, содержащее список свойств объекта Matrix.

Возвращает
String — Строка со значениями свойств объекта Matrix: a, b, c, d, tx и ty.
transformPoint()метод 
public function transformPoint(point:Point):Point

Версии среды выполнения: AIR 1.0, Flash Player 9

Возвращает результат применения геометрического преобразования, представленного объектом Matrix в заданной точке.

Параметры

point:Point — Точка, для которой необходимо получить результат преобразования объекта Matrix.

Возвращает
Point — Точка, полученная в результате применения преобразования объекта Matrix.
translate()метод 
public function translate(dx:Number, dy:Number):void

Язык версии : ActionScript 3.0
Версии среды выполнения: AIR 1.0, Flash Player 9

Перемещает матрицу вдоль осей x и y, как задано параметрами dx и dy.

Параметры

dx:Number — Значение перемещения вправо по оси x (в пикселах).
 
dy:Number — Значение перемещения вниз по оси y (в пикселах).

Примеры Как пользоваться примерами
MatrixExample.as

В следующем примере показано, как можно использовать класс MatrixExample для создания большого квадрата с градиентной заливкой. Это можно сделать, выполнив следующие действия:
  1. В приложении создается новый объект Matrix с именем myMatrix и используется метод trace() для вывода значений свойств по умолчанию для объекта myMatrix.
  2. В приложении вызывается метод createGradientBox() с параметрами width и height, равными 200 пикселам, отсутствием вращения и расстоянием для перемещения вдоль осей x и y, равным 50 пикселам.
  3. В приложении осуществляется повторная печать объекта myMatrix для отображения изменения после вызова метода createGradientBox().
  4. Для управления процессом заливкой градиентного прямоугольника в приложении настраиваются три переменные:
    • colors: задает плавные цветовые переходы — от сплошного красного до сплошного синего.
    • alphas: задает непрозрачность сплошной заливки.
    • ratios: задает распределение цветов, равное для красного и синего цветов.
  5. В приложении вызывается графический метод beginGradientFill(), который обрабатывает объект myMatrix и вызывает метод lineTo(), после выполнения которого создается прямоугольник с градиентной заливкой.
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 = [100, 100];
            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);
        }
    }
}