Справочник по ActionScript® 3.0 для платформы Adobe® Flash®
Домашняя страница  |  Скрыть список пакетов и классов |  Пакеты  |  Классы  |  Что нового  |  Указатель  |  Приложения  |  Почему по-английски?
Фильтры: AIR 30.0 или более ранней версии, Flash Player 30.0 или более ранней версии, Flash Lite 4
Flex 4.6 или более ранней версии, Flash Pro CS6 или более ранней версии
Скрыть фильтры
flash.geom 

Matrix  - AS3

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

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

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

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

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

  • метод draw() объекта BitmapData;
  • метод beginBitmapFill(), beginGradientFill() или lineGradientStyle() объекта Graphics.

Объект матрицы преобразования является матрицей размерностью 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.

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

Связанные элементы API



Общедоступные свойства
 СвойствоОпределено
  a : Number
Значение, от которого зависит размещение пикселей вдоль оси x при масштабировании или повороте изображения.
Matrix
  b : Number
Значение, от которого зависит размещение пикселей вдоль оси y при повороте или наклоне изображения.
Matrix
  c : Number
Значение, от которого зависит размещение пикселей вдоль оси x при повороте или наклоне изображения.
Matrix
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  d : Number
Значение, от которого зависит размещение пикселей вдоль оси y при масштабировании или повороте изображения.
Matrix
  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
  
copyColumnFrom(column:uint, vector3D:Vector3D):void
Копирует объект Vector3D в определенный столбец вызывающего объекта Matrix3D.
Matrix
  
copyColumnTo(column:uint, vector3D:Vector3D):void
Копирует определенный столбец вызывающего объекта Matrix в объект Vector3D.
Matrix
  
copyFrom(sourceMatrix:Matrix):void
Копирует все данные матрицы из исходного объекта Point в вызывающий объект Matrix.
Matrix
  
copyRowFrom(row:uint, vector3D:Vector3D):void
Копирует объект Vector3D в определенную строку вызывающего объекта Matrix.
Matrix
  
copyRowTo(row:uint, vector3D:Vector3D):void
Копирует определенную строку вызывающего объекта Matrix в объект Vector3D.
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
  
setTo(aa:Number, ba:Number, ca:Number, da:Number, txa:Number, tya:Number):void
Задает для членов объекта 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, Flash Lite 4

Значение, от которого зависит размещение пикселей вдоль оси 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, Flash Lite 4

Значение, от которого зависит размещение пикселей вдоль оси 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, Flash Lite 4

Значение, от которого зависит размещение пикселей вдоль оси 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, Flash Lite 4

Значение, от которого зависит размещение пикселей вдоль оси 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, Flash Lite 4

Расстояние, на которое перемещается каждая точка вдоль оси 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, Flash Lite 4

Расстояние, на которое перемещается каждая точка вдоль оси 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, Flash Lite 4

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

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

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

a = 1
b = 0
c = 0
d = 1
tx = 0
ty = 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, Flash Lite 4

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

Возвращает
Matrix — Объект Matrix.

concat

()метод 
public function concat(m:Matrix):void

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

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

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

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

Параметры

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

copyColumnFrom

()метод 
public function copyColumnFrom(column:uint, vector3D:Vector3D):void

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

Копирует объект Vector3D в определенный столбец вызывающего объекта Matrix3D.

Параметры

column:uint — Столбец, из которого следует скопировать данные.
 
vector3D:Vector3D — Объект Vector3D, из которого следует скопировать данные.

copyColumnTo

()метод 
public function copyColumnTo(column:uint, vector3D:Vector3D):void

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

Копирует определенный столбец вызывающего объекта Matrix в объект Vector3D. Элемент w объекта Vector3D не будет изменен.

Параметры

column:uint — Столбец, из которого следует скопировать данные.
 
vector3D:Vector3D — Объект Vector3D, из которого следует скопировать данные.

copyFrom

()метод 
public function copyFrom(sourceMatrix:Matrix):void

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

Копирует все данные матрицы из исходного объекта Point в вызывающий объект Matrix.

Параметры

sourceMatrix:Matrix — Объект Matrix, из которого следует скопировать данные.

copyRowFrom

()метод 
public function copyRowFrom(row:uint, vector3D:Vector3D):void

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

Копирует объект Vector3D в определенную строку вызывающего объекта Matrix.

Параметры

row:uint — Строка, из которой следует скопировать данные.
 
vector3D:Vector3D — Объект Vector3D, из которого следует скопировать данные.

copyRowTo

()метод 
public function copyRowTo(row:uint, vector3D:Vector3D):void

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

Копирует определенную строку вызывающего объекта Matrix в объект Vector3D. Элемент w объекта Vector3D не будет изменен.

Параметры

row:uint — Строка, из которой следует скопировать данные.
 
vector3D:Vector3D — Объект Vector3D, из которого следует скопировать данные.

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, Flash Lite 4

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

С помощью метода 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.

Связанные элементы API


Пример  ( Использование этого примера )

В следующем примере значения масштаба по оси 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=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

()метод 
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, Flash Lite 4

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

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

  • GradientType.LINEAR
  • Два цвета (зеленый и синий) с массивом коэффициентов [0, 255]
  • SpreadMethod.PAD
  • InterpolationMethod.LINEAR_RGB

В следующем примере показаны градиенты, в которых матрица была определена с помощью метода 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 degrees
     tx = 0; 
     ty = 0;
итоговый линейный градиент

Параметры

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

Связанные элементы API


Пример  ( Использование этого примера )

В следующем примере значения масштаба по оси 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, Flash Lite 4

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

Параметры

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

Возвращает
Point — Точка, полученная в результате применения преобразования матрицы.

identity

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

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

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

После вызова метода 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, Flash Lite 4

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


Пример  ( Использование этого примера )

В следующем примере создается объект 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, Flash Lite 4

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

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

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

Параметры

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

scale

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

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

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

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

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

Параметры

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

setTo

()метод 
public function setTo(aa:Number, ba:Number, ca:Number, da:Number, txa:Number, tya:Number):void

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

Задает для членов объекта Matrix определенные значения

Параметры

aa:Number — значения, которые следует задать для матрицы.
 
ba:Number
 
ca:Number
 
da:Number
 
txa:Number
 
tya:Number

toString

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

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

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

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

transformPoint

()метод 
public function transformPoint(point:Point):Point

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

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

Параметры

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

Возвращает
Point — Точка, полученная в результате применения преобразования объекта Matrix.

translate

()метод 
public function translate(dx:Number, dy:Number):void

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

Перемещает матрицу вдоль осей 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 = [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);
        }
    }
}




[ X ]Почему по-английски?
Содержимое Справочника ActionScript 3.0 отображается на английском языке

Не все части Справочника ActionScript 3.0 переводятся на все языки. Если какой-то текстовый элемент не переведен, он отображается на английском языке. Например, компонент ga.controls.HelpBox не переведен ни на один из языков. Это значит, что в русской версии справки компонент ga.controls.HelpBox будет отображаться на английском языке.