flash.geomUtils3D В классе Utils3D содержатся статические методы, которые позволяют упростить реализацию определенных трехмерных операций матрицы.Служебный класс со статическими методами, необходимый для упрощения реализации определенных трехмерных операций. Object В классе Utils3D содержатся статические методы, которые позволяют упростить реализацию определенных трехмерных операций матрицы. flash.geom.Matrix3Dflash.geom.Vector3Dflash.geom.Transformflash.geom.PerspectiveProjectionflash.display.Graphicsflash.display.GraphicsTrianglePathVectorpointTowards Интерполирует ориентацию объекта относительно положения.Измененная версия объекта Matrix3D, заданного во втором параметре. Чтобы преобразовать экранный объект с помощью метода pointTowards(), задайте свойство экранного объекта Matrix3D возвращенному объекту Matrix3D. flash.geom:Matrix3DpercentNumberЧисло от 0 до 1, на которое объект пошагово перемещается к цели. matflash.geom:Matrix3DСвойство Matrix3D преобразованного объекта. posflash.geom:Vector3DПоложение целевого объекта относительно мировых координат. Положение относительно мировых координат определяет преобразование объекта относительно мирового пространства, в котором располагаются все объекты. atflash.geom:Vector3DnullВектор относительно объекта, определяющий место локализации экранного объекта. Положение относительно объекта определяет преобразование объекта относительно пространства объекта, собственной координатной системы объекта. По умолчанию используется значение (0,0,-1). upflash.geom:Vector3DnullВектор относительно объекта, определяющий «верх» экранного объекта. Если объект обращен лицевой стороной вниз при просмотре сверху, ось +z будет являться для этого объекта вектором, направленным вверх. Положение относительно объекта определяет преобразование объекта относительно пространства объекта, собственной координатной системы объекта. По умолчанию используется значение (0,-1,0). Интерполирует ориентацию объекта относительно положения. В методе pointTowards() сочетаются функции методов Matrix3D.pointAt() и Matrix3D.interpolateTo().

Метод pointTowards() позволяет изменить ориентацию на месте. Он разбивает свойство Matrix3D экранного объекта и заменяет элементы поворота на элементы, с помощью которых будет выполняться переход на значение в процентах относительно положения цели. Объект может пошагово перемещаться к цели, не прекращая движения в собственном направлении. При последующих вызовах метода pointTowards(), за которым следует метод перехода, может создаваться анимация преследования объекта или следования за движущейся целью. Сначала переместите объект на значение в процентах по направлению к цели, затем пошагово перемещайте объект вдоль оси.

flash.geom.Matrix3D.pointAt()flash.geom.Matrix3D.interpolateTo()flash.geom.Matrix3D.interpolate()
projectVectors С помощью объекта проекции Matrix3D проецирует вектор трехмерных пространственных координат (verts) в вектор двумерных пространственных координат (projectedVerts).mflash.geom:Matrix3DОбъект проекции Matrix3D, реализующий преобразование проекции. Объект проекции Matrix3D можно создать с помощью свойства Matrix3D.rawData. vertsВектор чисел, в котором каждые три числа представляют координаты x, y и z трехмерного пространства, аналогично Vector3D(x,y,z). projectedVertsВектор чисел, в котором каждые два числа представляют спроецированную двухмерную координату, аналогично Point(x,y). Следует предварительно назначить вектор. Метод projectVectors() заполняет значения для каждой спроецированной точки. uvtsВектор чисел, в котором каждые три числа представляют элементы u, v и t данных uvt. u и v - это координаты текстуры для каждой спроецированной точки. Значение t — это значение глубины проекции, расстояние от наблюдателя до объекта Vector3D в поле обзора. Необходимо предварительно назначить вектор и указать значения u и v. Метод projectVectors заполняет значение t для каждой спроецированной точки. Проецирует вектор трехмерных пространственных координат в вектор двумерных пространственных координат. С помощью объекта проекции Matrix3D проецирует вектор трехмерных пространственных координат (verts) в вектор двумерных пространственных координат (projectedVerts). Перед использованием спроецированного объекта вектора в качестве параметра необходимо предварительно назначить его.

Метод projectVectors() также задает значение t данных uvt. Необходимо предварительно назначить вектор, в котором будут содержаться данные uvts для каждого спроецированного набора координат вектора. Также следует задать значения u и v данных uvt. Данные uvt — это вектор нормализованных координат, используемых для отображения текстуры. В координатах UV точка (0,0) — это верхняя левая точка, а точка (1,1) — нижняя правая точка растрового изображения.

Это метод можно использовать совместно с методом Graphics.drawTriangles() и классом GraphicsTrianglePath.

flash.display.Graphics.drawTriangles()flash.display.GraphicsTrianglePathflash.geom.Matrix3DprojectVector()Vector
projectVector С помощью объекта проекции Matrix3D выполняет проецирование объекта Vector3D из одного координатного пространства в другое.Новый объект Vector3D с преобразованными пространственными координатами. flash.geom:Vector3Dmflash.geom:Matrix3DОбъект проекции Matrix3D, реализующий преобразование проекции. Если экранный объект содержит объект PerspectiveProjection, можно использовать метод perspectiveProjection.toMatrix() для создания объекта проекции Matrix3D, который применяется к дочерним объектам экранного объекта. Для расширенных проекций используйте свойство matrix3D.rawData для создания пользовательских матриц проекции. Встроенный метод Matrix3D для создания объекта проекции Matrix3D отсутствует. vflash.geom:Vector3DОбъект Vector3D, который проецируется в новое координатное пространство. С помощью объекта проекции Matrix3D выполняет проецирование объекта Vector3D из одного координатного пространства в другое. Метод projectVector() подобен методу Matrix3D.transformVector(), за исключением того, что метод projectVector() делит элементы x, y и z исходного объекта Vector3D на значение глубины проекции. Значением глубины является расстояние от наблюдателя до объекта Vector3D в поле обзора. Значением расстояния по умолчанию считается значение элемента z. flash.geom.Matrix3D.transformVector()projectVectors()
Vector3D Класс Vector3D представляет точку или расположение в трехмерном пространстве с использованием декартовых координат x, y и z.Object Класс Vector3D представляет точку или расположение в трехмерном пространстве с использованием декартовых координат x, y и z. Как в двухмерном пространстве свойство x представляет горизонтальную ось, а свойство y — вертикальную ось. В трехмерном пространстве свойство z представляет глубину. Значение свойства x увеличивается при перемещении объекта вправо. Значение свойства y увеличивается при перемещении объекта вниз. Значение свойства z увеличивается при перемещении объекта вдаль от точки обзора. При использовании перспективной проекции и масштабирования объекта размер объекта увеличивается при приближении к экрану и уменьшается при удалении от него. Как в правосторонней трехмерной системе координат, положительная ось z направлена в противоположную от наблюдателя сторону и значение свойства z увеличивается при удалении объекта от наблюдателя. Исходной точкой (0,0,0) в глобальном пространстве является верхний левый угол рабочей области.

Класс Vector3D может также представлять направление, стрелку от исходной точки координатной системы с координатами (0,0,0) до конечной точки; или компоненты плавающей запятой цветовой модели RGB (Red, Green, Blue — красный, зеленый, синий).

Кватернион добавляет четвертый элемент, свойство w, которое предоставляет дополнительную информацию об ориентации. Например, свойство w может задавать угол вращения объекта Vector3D. Комбинация угла вращения и координат x, y и z может задавать ориентацию экранного объекта. Ниже представлены элементы Vector3D в виде матрицы:

flash.display.DisplayObjectflash.geom.Pointflash.geom.Matrix3Dflash.geom.Utils3DVectorVector3D Создает экземпляр объекта Vector3D.xNumber0.Первый элемент, например координата x. yNumber0.Второй элемент, например координата y. zNumber0.Третий элемент, например координата z. wNumber0.Необязательный элемент для дополнительных данных, например угол поворота. Создает экземпляр объекта Vector3D. Если в конструкторе параметр не указан, объект Vector3D создается с элементами (0,0,0,0). add Добавляет значения элементов x, y и z текущего объекта Vector3D к значениям элементов x, y и z другого объекта Vector3D.Объект Vector3D, получающийся в результате добавления текущего объекта Vector3D к другому объекту Vector3D. flash.geom:Vector3Daflash.geom:Vector3DОбъект Vector3D, добавляемый к текущему объекту Vector3D. Добавляет текущий объект Vector3D к другому объекту для создания нового объекта Vector3D. Добавляет значения элементов x, y и z текущего объекта Vector3D к значениям элементов x, y и z другого объекта Vector3D. Метод add() не изменяет текущий объект Vector3D. Вместо этого он возвращает новый объект Vector3D с новыми значениями.

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

incrementBy()
angleBetween Возвращает угол (в радианах) между двумя векторами.Угол между двумя объектами Vector3D. Numberaflash.geom:Vector3DПервый объект Vector3D. bflash.geom:Vector3DВторой объект Vector3D. Возвращает угол (в радианах) между двумя векторами. Возвращаемый угол представляет собой наименьший радиан вращения первого объекта Vector3D до его выравнивания со вторым объектом Vector3D.

Метод angleBetween() является статическим. Его можно использовать как метод класса Vector3D напрямую.

Для перевода градусов в радианы можно использовать следующую формулу:

radian = Math.PI/180 ~~ degree

clone Возвращает новый объект Vector3D, который является точной копией текущего объекта Vector3D.Новый объект Vector3D, который является копией текущего объекта Vector3D. flash.geom:Vector3D Возвращает новый объект Vector3D, который является точной копией текущего объекта Vector3D. crossProduct Возвращает новый объект Vector3D, который расположен перпендикулярно (под прямым углом) к текущему и второму объекту Vector3D.Новый объект Vector3D, расположенный перпендикулярно к данному объекту Vector3D и объекту Vector3D, заданному в качестве параметра. flash.geom:Vector3Daflash.geom:Vector3DВторой объект Vector3D. Возвращает новый объект Vector3D, который расположен перпендикулярно (под прямым углом) к текущему и второму объекту Vector3D. Если возвращен объект Vector3D с координатами (0,0,0), два объекта Vector3D расположены перпендикулярно друг к другу.

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

dotProduct()normalize()
decrementBy Уменьшает значения элементов x, y и z текущего объекта Vector3D на значения элементов x, y и z заданного объекта Vector3D.aflash.geom:Vector3DОбъект Vector3D, содержащий значения, которые нужно вычесть из текущего объекта Vector3D. Уменьшает текущий объект Vector3D на величину другого объекта Vector3D. Уменьшает значения элементов x, y и z текущего объекта Vector3D на значения элементов x, y и z заданного объекта Vector3D. В отличие от метода Vector3D.subtract() метод decrementBy() изменяет текущий объект Vector3D и не возвращает новый объект Vector3D. subtract()distance Возвращает расстояние между двумя объектами Vector3D.Расстояние между двумя объектами Vector3D. Numberpt1flash.geom:Vector3DОбъект Vector3D в виде первой трехмерной точки. pt2flash.geom:Vector3DОбъект Vector3D в виде второй трехмерной точки. Возвращает расстояние между двумя объектами Vector3D. Метод distance() является статическим. Его можно использовать как метод класса Vector3D напрямую для получения евклидового расстояния между двумя трехмерными точками. dotProduct Если текущий объект Vector3D и объект, заданный в качестве параметра, являются единичными вершинами, данный метод возвращает косинус угла между двумя вершинами.Скалярная величина, которая была получена в результате скалярного произведения текущего объекта Vector3D и заданного объекта Vector3D. Numberaflash.geom:Vector3DВторой объект Vector3D. Возвращает скалярное произведение текущего и второго объекта Vector3D. Если текущий объект Vector3D и объект, заданный в качестве параметра, являются единичными вершинами, данный метод возвращает косинус угла между двумя вершинами. Единичные вершины — это вершины с одинаковым направлением, но с одной длиной. Они удаляют длину вектора как множителя в результате. Метод normalize() можно использовать для преобразования вектора в единичный вектор.

Метод dotProduct() используется для вычисления угла между двумя вершинами. Он также используется в вычислении отбора или освещения невидимой поверхности. Отбор невидимой поверхности — это процедура определения поверхностей, которые будут скрыты в точке наблюдения. Нормализованные вершины с камеры или точки наблюдения и векторное произведение вершин поверхности многоугольника можно использовать для получения скалярного произведения. Если скалярное произведение меньше нуля, то поверхность видима камере или наблюдателю. Если две единичные вершины расположены перпендикулярно друг к другу, они являются ортогональными и их скалярное произведение равно нулю. Если две вершины расположены параллельно друг к другу, скалярное произведение равно единице.

crossProduct()normalize()
equals Определяет равенство двух объектов Vector3D путем сравнения элементов x, y и z текущего объекта Vector3D и заданного объекта Vector3D.Возвращается значение true, если заданный объект Vector3D равен текущему объекту Vector3D, и значение false, если не равен. BooleantoCompareflash.geom:Vector3DОбъект Vector3D, сравниваемый с текущим объектом Vector3D. allFourBooleanfalseНеобязательный параметр, который определяет необходимость использования свойства w объектов Vector3D при сравнении. Определяет равенство двух объектов Vector3D путем сравнения элементов x, y и z текущего объекта Vector3D и заданного объекта Vector3D. Если значения этих элементов одинаковые, два объекта Vector3D равны. Если для второго дополнительного параметра задано значение true, сравниваются все четыре элемента объектов Vector3D, включая свойство w. nearEquals()incrementBy Увеличивает значение элементов x, y и z текущего объекта Vector3D на значения элементов x, y и z заданного объекта Vector3D.aflash.geom:Vector3DОбъект Vector3D, добавляемый к текущему объекту Vector3D. Увеличивает текущий объект Vector3D на величину другого объекта Vector3D. Увеличивает значение элементов x, y и z текущего объекта Vector3D на значения элементов x, y и z заданного объекта Vector3D. В отличие от метода Vector3D.add(), метод incrementBy() изменяет текущий объект Vector3D и не возвращает новый объект Vector3D. add()nearEquals Сравнивает элементы текущего объекта Vector3D с элементами заданного объекта Vector3D для определения приблизительного равенства.Возвращается значение true, если заданный объект Vector3D приблизительно равен текущему объекту Vector3D, и значение false, если не равен. BooleantoCompareflash.geom:Vector3DОбъект Vector3D, сравниваемый с текущим объектом Vector3D. toleranceNumberЧисло, определяющее коэффициент допустимого отклонения. Если разность между значением элемента Vector3D, заданного в параметре toCompare, и значением текущего элемента Vector3D не превышает значение допустимого отклонения, эти два значения считаются приблизительно равными. allFourBooleanfalseНеобязательный параметр, который определяет необходимость использования свойства w объектов Vector3D при сравнении. Сравнивает элементы текущего объекта Vector3D с элементами заданного объекта Vector3D для определения приблизительного равенства. Два объекта Vector3D приблизительно равны, если значение всех элементов двух вершин равны, или если результат сравнения находится в пределах допустимого отклонения. Разность между двумя элементами должна быть меньше значения, указанного в параметре tolerance. Если для третьего дополнительного параметра задано значение true, сравниваются все четыре элемента объектов Vector3D, включая свойство w. В противном случае при сравнении учитываются только элементы x, y и z. equals()negate Задает обращение текущего объекта Vector3D. Задает обращение текущего объекта Vector3D. Инверсный объект считается противоположным исходному объекту. Значения свойств x, y и z текущего объекта Vector3D меняются на значения -x, -y и -z. normalize Преобразует объект Vector3D в единичный вектор делением первых трех элементов (x, y и z) на длину вектора.Длина текущего объекта Vector3D. Number Преобразует объект Vector3D в единичный вектор делением первых трех элементов (x, y и z) на длину вектора. Единичные вершины — это вершины, имеющие направление, но их длина равна единице. Они упрощают вычисления векторов, убирая длину в качестве множителя. project Делит значения свойств x, y и z текущего объекта Vector3D на значение его свойства w. Делит значения свойств x, y и z текущего объекта Vector3D на значение его свойства w.

Если текущий объект Vector3D является результатом умножения объекта Vector3D на объект проекции Matrix3D, в свойстве w может содержаться значение преобразования. Затем проецирование может быть выполнено с помощью метода project() путем деления элементов на значение свойства w. Свойство Matrix3D.rawData можно использовать для создания объекта проекции Matrix3D.

scaleBy Масштабирует текущий объект Vector3D на скаляр (значение).sNumberМножитель (скалярная величина), который используется для масштабирования объекта Vector3D. Масштабирует текущий объект Vector3D на скаляр (значение). Элементы x, y и z объекта Vector3D умножаются на скалярную величину, заданную в параметре. Например, если вектор масштабируется с коэффициентом, равным десяти, в результате получается вектор, длина которого в десять раз больше. Скалярная величина может также изменить направление вектора. При умножении вектора на отрицательное число направление вектора меняется на обратное. subtract Вычитает значения элементов x, y и z текущего объекта Vector3D из значений элементов x, y и z другого объекта Vector3D.Новый объект Vector3D, представляющий собой разницу текущего объекта Vector3D и заданного объекта Vector3D. flash.geom:Vector3Daflash.geom:Vector3DОбъект Vector3D, вычитаемый из текущего объекта Vector3D. Вычитает текущий объект Vector3D из другого объекта Vector3D для создания нового объекта Vector3D. Вычитает значения элементов x, y и z текущего объекта Vector3D из значений элементов x, y и z другого объекта Vector3D. Метод subtract() не изменяет текущий объект Vector3D. Вместо этого данный метод возвращает новый объект Vector3D с новыми значениями. decrementBy()toString Возвращает строковое представление текущего объекта Vector3D.Строка, в которой содержатся значения свойств x, y и z. String Возвращает строковое представление текущего объекта Vector3D. В строке содержатся значения свойств x, y и z. X_AXIS Ось x, определенная в виде объекта Vector3D с координатами (1,0,0).unknownflash.geom:Vector3D Ось x, определенная в виде объекта Vector3D с координатами (1,0,0). Y_AXIS Ось y, определенная в виде объекта Vector3D с координатами (0,1,0).unknownflash.geom:Vector3D Ось y, определенная в виде объекта Vector3D с координатами (0,1,0). Z_AXIS Ось z, определенная в виде объекта Vector3D с координатами (0,0,1).unknownflash.geom:Vector3D Ось z, определенная в виде объекта Vector3D с координатами (0,0,1). w Четвертый элемент объекта Vector3D (в дополнение к свойствам x, y и z) может содержать такие данные, как угол вращения.Number Четвертый элемент объекта Vector3D (в дополнение к свойствам x, y и z) может содержать такие данные, как угол вращения. Значением по умолчанию является 0.

Запись кватерниона включает в себя угол в качестве четвертого элемента вычисления трехмерного вращения. Свойство w можно использовать для определения угла вращения объекта Vector3D. Комбинация угла вращения и координат (x,y,z) задает ориентацию экранного объекта.

Более того, свойство w можно использовать в качестве коэффициента деформации перспективы для спроецированного трехмерного положения или в качестве значения преобразования перспективы в представлении трехмерной координаты, спроецированной в двухмерное пространство. Например, можно создать матрицу проекции при помощи свойства Matrix3D.rawData, которая, после применения к объекту Vector3D, производит значение преобразования для четвертого элемента объекта Vector3D (свойства w). В результате последующего деления других элементов объекта Vector3D на значение преобразования получается спроецированный объект Vector3D. При помощи метода Vector3D.project() можно разделить первые три элемента объекта Vector3D на его четвертый элемент.

project()
x Первый элемент объекта Vector3D, например координата x точки в трехмерном пространстве.Number Первый элемент объекта Vector3D, например координата x точки в трехмерном пространстве. Значением по умолчанию является 0. y Второй элемент объекта Vector3D, например координата y точки в трехмерном пространстве.Number Второй элемент объекта Vector3D, например координата y точки в трехмерном пространстве. Значением по умолчанию является 0. z Третий элемент объекта Vector3D, например координата z точки в трехмерном пространстве.Number Третий элемент объекта Vector3D, например координата z точки в трехмерном пространстве. Значением по умолчанию является 0. lengthSquared Квадрат длины текущего объекта Vector3D, вычисленный с использованием свойств x, y и z.NumberКвадрат длины текущего объекта Vector3D. Квадрат длины текущего объекта Vector3D, вычисленный с использованием свойств x, y и z. Свойство w игнорируется. По возможности используйте метод lengthSquared() вместо более медленного метода Math.sqrt() в методе Vector3D.length(). lengthlength Длина, значение текущего объекта VectorD от исходной точки (0,0,0) до координат x, y и z объекта.NumberДлина текущего объекта Vector3D. Длина, значение, текущего объекта VectorD от исходной точки (0,0,0) до координат x, y и z объекта. Свойство w игнорируется. Длина или величина единичного вектора равна единице. lengthSquared
Matrix3D Класс Matrix3D представляет матрицу преобразования, которая определяет положение и ориентацию трехмерного (3D) экранного объекта.Object Класс Matrix3D представляет матрицу преобразования, которая определяет положение и ориентацию трехмерного (3D) экранного объекта. С помощью матрицы можно выполнять функции преобразования, включая перенос (изменение положения по осям x, y и z), поворот и масштабирование (изменение размера). С помощью класса Matrix3D можно также выполнять перспективное проецирование, при котором точки трехмерного координатного пространства сопоставляются в двумерной проекции.

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

Если свойство z или какое-либо свойство поворота или масштабирования экранного объекта задано явно, соответствующий объект Matrix3D создается автоматически.

Доступ к объекту Matrix3D трехмерного экранного объекта можно получить с помощью свойства transform.matrix3d. Для двумерных объектов объект Matrix3D не предусмотрен.

Значение свойства z двухмерного объекта равно нулю, а значение его свойства matrix3D равно null.

Примечание. Если один объект Matrix3D назначен двум различным экранным объектам, возникает ошибка выполнения.

В классе Matrix3D используется квадратная матрица размерностью 4x4, представляющая собой таблицу чисел из четырех строк и столбцов, в которой содержатся данные для преобразования. В первых трех строках матрицы содержатся данные для каждой трехмерной оси (x,y,z). Данные о преобразовании находятся в последнем столбце. Данные об ориентации и масштабировании хранятся в первых трех столбцах. Коэффициенты масштабирования являются диагональными числами в первых трех столбцах. Ниже представлены элементы Matrix3D:

Для использования класса Matrix3D не требуется понимание принципов вычисления матриц. В нем предоставляются определенные методы, которые позволяют упростить задачи преобразования и проецирования, например методы appendTranslation(), appendRotation() или interpolateTo(). Можно также использовать методы decompose() и recompose() или свойство rawData для доступа к базовым элементам матрицы.

В экранных объектах выполняется кэширование свойств поворота осей для выполнения отдельного поворота каждой оси и управления различными комбинациями поворотов. При вызове метода объекта Matrix3D для преобразования экранного объекта кэш поворота объекта становится недействительным.

flash.display.DisplayObjectflash.geom.Transformflash.geom.PerspectiveProjectionflash.geom.Vector3Dflash.geom.Orientation3Dflash.geom.Utils3Dflash.geom.MatrixMatrix3D Создание объекта Matrix3D.vnullВектор из 16 чисел, в котором каждые четыре элемента могут представлять строку или столбец матрицы 4x4. Создание объекта Matrix3D. Объекты Matrix3D можно инициализировать с помощью вектора из 16 чисел, в котором каждые четыре элемента могут представлять строку или столбец. После создания объекта Matrix3D доступ к элементам матрицы можно получить с помощью свойства rawData.

Если отсутствуют заданные параметры, конструктор создает единичный объект Matrix3D. По определению в единичной матрице присвоены единичные значения для всех элементов по главной диагонали и нулевые значения для всех остальных элементов. Значением свойства rawData единичной матрицы является: 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1. Значением положения или перемещения единичной матрицы является Vector3D(0,0,0), значением для вращения — Vector3D(0,0,0), а значением для масштабирования — Vector3D(1,1,1).

identity()Vector
appendRotation Добавление инкрементного поворота к объекту Matrix3D.degreesNumberУгол поворота в градусах. axisflash.geom:Vector3DОсь или направление поворота. Обычно используются оси X_AXIS (Vector3D (1,0,0)), Y_AXIS (Vector3D (0,1,0)) и Z_AXIS (Vector3D (0,0,1)). pivotPointflash.geom:Vector3DnullТочка, которая определяет центр поворота объекта. Точкой поворота объекта по умолчанию является точка регистрации объекта. Добавление инкрементного поворота к объекту Matrix3D. Когда объект Matrix3D применяется к экранному объекту, матрица выполняет поворот после других преобразований в объекте Matrix3D.

Поворот экранного объекта определяется осью, постепенно увеличивающимся углом поворота вокруг оси и дополнительной точкой поворота для центра поворота объекта. Ось может располагаться в одном из общепринятых направлений. Наиболее часто используемыми осями являются X_AXIS (Vector3D (1,0,0)), Y_AXIS (Vector3D (0,1,0)) и Z_AXIS (Vector3D (0,0,1)). В авиационной терминологии поворот вокруг оси y называется «рысканием». Поворот вокруг оси x называется «тангажом». Поворот вокруг оси z называется «креном».

Порядок преобразования учитывается. Эффект преобразования поворота с последующим перемещением отличается от преобразования перемещения с последующим поворотом.

Эффект поворота не является абсолютным. Он выполняется относительно текущего положения и ориентации. Для выполнения абсолютного изменения матрицы преобразования необходимо использовать метод recompose(). Метод appendRotation() также отличается от свойства поворота оси экранного объекта, такого как свойство rotationX. Свойство поворота всегда применяется перед любым преобразованием, в то время как метод appendRotation() применяется относительно уже существующих значений матрицы. Чтобы получить эффект, аналогичный свойству поворота оси экранного объекта, используйте метод prependRotation(), который выполняет поворот перед другими преобразованиями матрицы.

Когда преобразование метода appendRotation() применяется к объекту Matrix3D экранного объекта, кэшированные значения свойств поворота экранного объекта становятся недействительными.

Одним из способов вращения экранного объекта вокруг определенной точки относительно его расположения является настройка перемещения объекта в заданную точку, вращение объекта с использованием метода appendRotation() и обратное перемещение объекта а исходное положение. В следующем примере трехмерный экранный объект myObject осуществляет вращение по оси y вокруг точки с координатами (10,10,0).

myObject.z = 1; myObject.transform.matrix3D.appendTranslation(10,10,0); myObject.transform.matrix3D.appendRotation(1, Vector3D.Y_AXIS); myObject.transform.matrix3D.appendTranslation(-10,-10,0);
prependRotation()
appendScale Добавление инкрементного изменения масштаба вдоль осей x, y и z к объекту Matrix3D.xScaleNumberКоэффициент, используемый для масштабирования объекта вдоль оси x. yScaleNumberКоэффициент, используемый для масштабирования объекта вдоль оси y. zScaleNumberКоэффициент, используемый для масштабирования объекта по оси z. Добавление инкрементного изменения масштаба вдоль осей x, y и z к объекту Matrix3D. Когда объект Matrix3D применяется к экранному объекту, матрица выполняет изменения масштаба после других преобразований в объекте Matrix3D. По умолчанию используется коэффициент масштабирования, равный (1.0, 1.0, 1.0).

Масштаб определяется как набор трех инкрементных изменений вдоль трех осей (x,y,z). Каждую ось можно умножить на различное число. При применении изменений масштаба к экранному объекту размер объекта увеличивается или уменьшается. Например, установка осей x, y и z на значение 2 увеличивает размер объекта вдвое, тогда как установка этих осей на значение 0.5 уменьшает размер в два раза. Чтобы преобразование масштаба выполнялось только относительно определенной оси, необходимо задать для остальных параметров значения 1. Значение 1 параметра означает, что изменение масштаба вдоль заданной оси выполняться не будет.

Метод appendScale() можно использовать для изменения размеров, а также для управления искажениями, такими как укорочение или удлинение экранного объекта или увеличение или уменьшение масштаба определенного местоположения. Преобразования масштаба выполняются автоматически во время поворота и перемещения экранного объекта.

Порядок преобразования учитывается. Эффект масштабирования с последующим перемещением отличается от эффекта перемещения с последующим преобразованием масштаба.

prependScale()
appendTranslation Добавление инкрементного перемещения, изменения положения вдоль осей x, y и z, к объекту Matrix3D.xNumberИнкрементное перемещение по оси x. yNumberИнкрементное перемещение по оси y. zNumberИнкрементное перемещение по оси z. Добавление инкрементного перемещения, изменения положения вдоль осей x, y и z, к объекту Matrix3D. Когда объект Matrix3D применяется к экранному объекту, матрица выполняет изменения перемещения после других преобразований в объекте Matrix3D.

Перемещение определяется как набор из трех инкрементных изменений вдоль трех осей (x,y,z). Когда преобразование применяется к экранному объекту, экранный объект перемещается из текущего положения вдоль осей x, y и z в соответствии с заданными параметрами. Чтобы перемещение выполнялось только относительно определенной оси, необходимо задать для остальных параметров нулевые значения. Нулевое значение параметра означает, что изменение вдоль заданной оси выполняться не будет.

Изменения перемещения не являются абсолютными. Они выполняются относительно текущего расположения и ориентации матрицы. Для выполнения абсолютного изменения матрицы преобразования необходимо использовать метод recompose(). Порядок преобразования также учитывается. Эффект преобразования перемещения, за которым следует поворот, отличается от поворота с последующим перемещением.

prependTranslation()position
append Добавление матрицы путем умножения другого объекта Matrix3D на текущий объект Matrix3D.lhsflash.geom:Matrix3DЛевосторонняя матрица, то есть умноженная на текущий объект Matrix3D. Добавление матрицы путем умножения другого объекта Matrix3D на текущий объект Matrix3D. Результат объединяет оба преобразования матрицы. Объект Matrix3D можно умножить на несколько матриц. В конечном объекте Matrix3D будет содержаться результат всех преобразований.

Умножение матриц отличается от сложения матриц. Умножение матриц не является коммутативным. Другими словами, A, умноженное на Б, не равно Б, умноженному на А. При использовании метода append() умножение выполняется с левой стороны, то есть объект Matrix3D lhs находится слева от оператора умножения.

thisMatrix = lhs ~~ thisMatrix;

При первом вызове метода append() выполняется изменение относительно родительского пространства. При последующих вызовах выполняются изменения относительно системы координат добавленного объекта Matrix3D.

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

flash.geom.Matrix3D.prepend()
clone Возвращает новый объект Matrix3D, который является точной копией текущего объекта Matrix3D.Новый объект Matrix3D, который является точной копией текущего объекта Matrix3D. flash.geom:Matrix3D Возвращает новый объект Matrix3D, который является точной копией текущего объекта Matrix3D. decompose Возвращает параметры перемещения, поворота и масштабирования матрицы преобразования в виде вектора из тех объектов Vector3D.Вектор из трех объектов Vector3D, в каждом из которых содержатся соответствующие параметры перемещения, поворота и масштабирования. orientationStyleStringeulerAnglesНеобязательный параметр, определяющий стиль ориентации, используемый для матрицы преобразования. Три типа стиля ориентации: eulerAngles (константа EULER_ANGLES), axisAngle (константа AXIS_ANGLE) и quaternion (константа QUATERNION). Для получения дополнительной информации о другом стиле ориентации см. класс geom.Orientation3D. Возвращает параметры перемещения, поворота и масштабирования матрицы преобразования в виде вектора из тех объектов Vector3D. В первом объекте Vector3D хранятся элементы перемещения. Во втором объекте Vector3D хранятся элементы поворота. В третьем объекте Vector3D хранятся элементы масштабирования.

Некоторые методы Matrix3D, например метод interpolateTo(), автоматически разбивает на части и восстанавливает матрицу для выполнения преобразования.

Чтобы модифицировать преобразование матрицы с использованием абсолютной родительской системой координат, получите параметры при помощи метода decompose() и внесите соответствующие изменения. Затем можно применить к объекту Matrix3D измененное преобразование при помощи метода recompose().

Параметр метода decompose() задает стиль ориентации, используемый для преобразования. По умолчанию используется ориентация eulerAngles, которая определяет ориентацию с тремя различными углами поворота вокруг каждой оси. Повороты выполняются последовательно, и ось каждого поворота не изменяется. С помощью свойств поворота осей экранного объекта выполняется преобразование стиля ориентации эйлеровых углов (Euler Angles). Другими вариантами стиля ориентации являются axisAngle и quaternion. Для определения ориентации межосевых улов используется комбинация оси и угла. Ось, вокруг которой вращается объект, является единичным вектором, который представляет направление. Угол представляет величину поворота относительно вектора. Направление также определяет расположение лицевой стороны экранного объекта, а угол — направление лицевой стороны вверх. В методах appendRotation() и prependRotation() используется ориентация межосевого угла. В ориентации кватерниона используются комплексные числа и четвертый элемент вектора. Такая ориентация представлена тремя осями поворота (x,y,z) и углом поворота (w). В методе interpolate() используется кватернион.

В следующем примере при помощи методов decompose() и recompose() эллипс вытягивается по горизонтали во время движения к точке схода. Первый объект Vector3D, возвращенный методом decompose(), содержит координаты перемещения. Третий объект Vector3D содержит параметры масштабирования. Метод объекта Vector3D incrementBy() увеличивает значения параметров абсолютного перемещения и масштабирования матрицы. package { import flash.display.MovieClip; import flash.display.Shape; import flash.geom.*; import flash.events.Event; public class Matrix3DdecomposeExample extends MovieClip { private var ellipse:Shape = new Shape(); public function Matrix3DdecomposeExample():void { ellipse.x = (this.stage.stageWidth / 2); ellipse.y = (this.stage.stageHeight - 40); ellipse.z = 1; ellipse.graphics.beginFill(0xFF0000); ellipse.graphics.lineStyle(2); ellipse.graphics.drawEllipse(0, 0, 50, 40); ellipse.graphics.endFill(); addChild(ellipse); ellipse.addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function enterFrameHandler(e:Event):void { var v3:Vector.<Vector3D> = new Vector.<Vector3D>(3); v3 = ellipse.transform.matrix3D.decompose(); v3[0].incrementBy(new Vector3D(0,0,1)); v3[2].incrementBy(new Vector3D(0.01,0,0)); ellipse.transform.matrix3D.recompose(v3); } } }
flash.geom.Orientation3Drecompose()Vector
deltaTransformVector Использует матрицу преобразования без элементов перемещения для преобразования объекта Vector3D из одних пространственных координат в другие.Объект Vector3D с преобразованными координатами. flash.geom:Vector3Dvflash.geom:Vector3DОбъект Vector3D с координатами, которые подлежат преобразованию. Использует матрицу преобразования без элементов перемещения для преобразования объекта Vector3D из одних пространственных координат в другие. В возвращенном объекте Vector3D содержатся новые координаты, полученные после применения преобразований поворота и масштабирования. Если в методе deltaTransformVector() применяется матрица, в которой содержится только преобразование перемещения, возвращенный объект Vector3D совпадает с исходным объектом Vector3D.

Метод deltaTransformVector() можно использовать, чтобы экранный объект в одном пространстве координат реагировал на преобразование поворота второго экранного объекта. Поворот не будет копироваться в объекте; изменяется только положение объекта в соответствии с изменениями поворота. Например, чтобы использовать программный интерфейс display.Graphics для рисования трехмерного вращающегося экранного объекта, необходимо назначить координаты трехмерного вращающегося объекта двухмерной точке. Сначала получите трехмерные координаты объекта после каждого поворота с помощью метода deltaTransformVector(). Далее примените метод local3DToGlobal() экранного объекта для преобразования трехмерных координат в двумерные точки. Затем двумерные точки можно использовать для рисования трехмерного вращающегося объекта.

transformVectors()transformVector()
identity Преобразует текущую матрицу в единичную матрицу. Преобразует текущую матрицу в единичную матрицу. В единичной матрице присвоены единичные значения для всех элементов по главной диагонали и нулевые значения для всех остальных элементов. В результате получается матрица, в которой значение rawData равно 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1, в качестве параметра поворота используется Vector3D(0,0,0), для параметра положения или перемещения задано значение Vector3D(0,0,0), а для масштаба — Vector3D(1,1,1). Ниже представлена единичная матрица:

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

interpolateTo Интерполяция матрицы экранного объекта на процентное значение ближе к целевой матрице.toMatflash.geom:Matrix3DЦелевой объект Matrix3D. percentNumberЗначение от 0 до 1, которое определяет расположение экранного объекта относительно цели. Чем ближе значение к 1,0, тем ближе экранный объект к его текущему положению. Чем ближе значение к 0, тем ближе экранный объект к цели. Интерполяция матрицы экранного объекта на процентное значение ближе к целевой матрице. Все элементы для перемещения, поворота и масштабирования экранного объекта интерполируются до промежуточных значений матрицы текущего и матрицы целевого объекта.

Метод interpolateTo() позволяет избежать получения нежелательных результатов, которые могут появиться при использовании методов, таких как свойств поворота осей экранного объекта. Метод interpolateTo() отменяет действие кэшированного значения свойства поворота экранного объекта и преобразует элементы ориентации матрицы экранного объекта в кватернион перед интерполяцией. Этот метод обеспечивает кратчайший наиболее эффективный контур вращения. Он также позволяет выполнять сглаживание без эффекта «шарнирного замка». Эффект «шарнирного замка» может произойти при использовании эйлеровых углов, когда каждая ось обрабатывается независимо. Во время вращения вокруг двух или более осей оси оказываются расположенными параллельно друг другу, что приводит к получению непредвиденных результатов. Вращение кватерниона позволяет избежать появление эффекта «шарнирного замка».

При последующих вызовах метода interpolateTo() может возникнуть эффект быстрого запуска экранного объекта, а затем медленное приближение другого экранного объекта. Например, если для параметра percent задано значение 0,1, экранный объект перемещается на десять процентов ближе к целевому объекту, заданному параметром toMat. При последующих вызовах или в последующих кадрах объект переместится на десять процентов от оставшихся девяноста процентов, затем на десять процентов от оставшихся восьмидесяти, пока цель не будет достигнута.

В данном примере ellipse2, трехмерный экранный объект, перемещается по направлению к ellipse1, другому трехмерному экранному объекту. ellipse2 следует за ellipse1, пытаясь поймать его. Если ellipse1 не будет вращаться вокруг своей оси y, ellipse2 достигнет верха ellipse1. Эти два эллипса нарисованы одинаково, но размещены в различных трехмерных положениях мировых координат. package { import flash.display.MovieClip; import flash.display.Shape; import flash.display.Graphics; import flash.geom.*; import flash.events.Event; public class InterpolateToExample extends MovieClip { private var ellipse1:Shape = new Shape(); private var ellipse2:Shape = new Shape(); public function InterpolateToExample():void { ellipse1 = myEllipses(250, 100, 500, 0xFF0000); addChild(ellipse1); ellipse2 = myEllipses(-30, 120, 1, 0x00FF00); addChild(ellipse2); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function myEllipses(x:Number, y:Number, z:Number, c:Number):Shape { var s:Shape = new Shape(); s.x = x; s.y = y; s.z = z; s.graphics.beginFill(c); s.graphics.lineStyle(2); s.graphics.drawEllipse(100, 50, 100, 80); s.graphics.endFill(); return s; } private function enterFrameHandler(e:Event) { ellipse1.rotationY += 1; ellipse2.transform.matrix3D.interpolateTo(ellipse1.transform.matrix3D, 0.1); } } }
interpolate()
interpolate Позволяет упростить интерполяцию из одной координатной системы в другую путем интерполяции экранного объекта на процентное значение ближе к целевому экранному объекту.Объект Matrix3D с элементами, которые размещают значения матрицы между исходной матрицей и целевой матрицей. Когда возвращенная матрица применяется к экранному объекту this, объект перемещается на определенное значение ближе к целевому объекту. flash.geom:Matrix3DthisMatflash.geom:Matrix3DОбъект Matrix3D, который будет интерполирован. toMatflash.geom:Matrix3DЦелевой объект Matrix3D. percentNumberЗначение от 0 до 1, которое определяет процентное значение, на которое следует интерполировать объект Matrix3D thisMat по отношению к целевому объекту Matrix3D. Интерполирует экранный объект на процентную величину ближе по направлению к целевому экранному объекту. Позволяет упростить интерполяцию из одной координатной системы в другую путем интерполяции экранного объекта на процентное значение ближе к целевому экранному объекту. В результате получается новый объект Matrix3D, в котором все элементы для перемещения, поворота и масштабирования интерполированы до промежуточных значений текущего и целевого экранного объекта.

Метод interpolate() позволяет избежать получение некоторых нежелательных результатов, которые могут появиться при использовании методов, таких как свойств поворота осей экранного объекта. Метод interpolate() отменяет действие кэшированного значения свойства поворота экранного объекта и преобразует элементы ориентации матрицы экранного объекта в кватернион перед интерполяцией. Этот метод обеспечивает кратчайший наиболее эффективный контур вращения. Он также позволяет выполнять сглаживание без эффекта «шарнирного замка». Эффект «шарнирного замка» может произойти при использовании эйлеровых углов, когда каждая ось обрабатывается независимо. Во время вращения вокруг двух или более осей оси оказываются расположенными параллельно друг другу, что приводит к получению непредвиденных результатов. Вращение кватерниона позволяет избежать появление эффекта «шарнирного замка».

При последующих вызовах метода interpolate() может возникать эффект быстрого запуска экранного объекта, а затем медленное приближение другого экранного объекта. Например, если установить параметр thisMat на возвращенный объект Matrix3D, параметр toMat на объект Matrix3D, связанный с целевым экранным объектом, а параметр percent на значение 0,1, экранный объект переместится на 10 процентов ближе к целевому объекту. При последующих вызовах или в последующих кадрах объект переместится на десять процентов от оставшихся девяноста процентов, затем на десять процентов от оставшихся восьмидесяти, пока цель не будет достигнута.

interpolateTo()flash.geom.Utils3D.pointTowards()
invert Обращение текущей матрицы.Возвращает значение true, если обращение матрицы выполнено успешно. Boolean Обращение текущей матрицы. Размер обратной матрицы равен размеру исходной матрицы, но выполнено обратное преобразование исходной матрицы. Например, если в исходной матрице объект вращается вокруг оси x в определенном направлении, при обращении матрицы объект будет вращаться вокруг оси в обратном направлении. При применении обратной матрицы к объекту происходит отмена преобразования, выполненного исходной матрицей. При умножении матрицы на обратную матрицу получается единичная матрица.

Обратную матрицу можно использовать для деления одной матрицы на другую. Разделить матрицу A на матрицу B можно, умножив матрицу А на обратную матрицу B. Обратную матрицу можно также использовать с пространством камеры. При перемещении камеры в пространстве мировых координат объект в этом пространстве должен перемещаться в обратном направлении для выполнения преобразования представления в мировых координатах в пространство камеры или обзора. Например, когда камера перемещается ближе, объекты становятся больше. Другими словами, если камера перемещается вниз по оси z мировой системы координат, объект перемещается вверх по оси z мировой системы координат.

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

Объект Matrix3D должен быть обратимым.

определитель
pointAt Поворот экранного объекта, чтобы он был обращен лицевой стороной к определенному положению.posflash.geom:Vector3DПоложение целевого объекта относительно мировых координат. Положение относительно мировых координат определяет преобразование объекта относительно мирового пространства, в котором располагаются все объекты. atflash.geom:Vector3DnullВектор относительно объекта, определяющий место локализации экранного объекта. Положение относительно объекта определяет преобразование объекта относительно пространства объекта, собственной координатной системы объекта. Значением по умолчанию является ось +y (0,1,0). upflash.geom:Vector3DnullВектор относительно объекта, определяющий «верх» экранного объекта. Если объект обращен лицевой стороной вниз при просмотре сверху, ось +z будет являться для этого объекта вектором, направленным вверх. Положение относительно объекта определяет преобразование объекта относительно пространства объекта, собственной координатной системы объекта. Значением по умолчанию является ось +z (0,0,1). Поворот экранного объекта, чтобы он был обращен лицевой стороной к определенному положению. Этот метод позволяет выполнять изменение ориентации на месте. Прямое направление вектора экранного объекта (объект Vector3D at) будет указывать на заданное положение относительно мировых координат. Направление экранного объекта вверх задается с помощью объекта Vector3D up.

Метод pointAt() отменяет действие кэшированных значений свойств поворота экранного объекта. Метод разбивает на части матрицу экранного объекта и изменяет элементы поворота для поворота объекта в заданное положение. А затем восстанавливает (обновляет) матрицу экранного объекта, которая выполняет преобразование. Если объект указывает на движущуюся цель, например положение перемещающегося объекта, то при каждом последующем вызове метода объект будет поворачиваться к движущейся цели.

Примечание. Если метод Matrix3D.pointAt() используется без настройки дополнительных параметров, целевой объект не обращается лицом в заданную позицию относительно мировой системы координат по умолчанию. Необходимо задать для свойства at значение по оси -y (0,-1,0) и для свойства up значение по оси -z (0,0,-1).

В следующем примере треугольник указывает на эллипс и следует по траектории его движения. Для эллипса и треугольника заданы различные местоположения. Затем эллипс перемещается вверх по направлению к углу рабочей области. Треугольник следует за перемещением эллипса. Можно изменить форму треугольника и параметры at и up метода pointAt(), чтобы увидеть, как эти изменения влияют на движение треугольника. package { import flash.display.MovieClip; import flash.display.Shape; import flash.display.Graphics; import flash.geom.*; import flash.events.Event; public class PointAtExample extends MovieClip { private var ellipse:Shape = new Shape(); private var triangle:Shape = new Shape(); public function PointAtExample():void { ellipse.graphics.beginFill(0xFF0000); ellipse.graphics.lineStyle(2); ellipse.graphics.drawEllipse(30, 40, 50, 40); ellipse.graphics.endFill(); ellipse.x = 100; ellipse.y = 150; ellipse.z = 1; triangle.graphics.beginFill(0x0000FF); triangle.graphics.moveTo(0, 0); triangle.graphics.lineTo(40, 40); triangle.graphics.lineTo(80, 0); triangle.graphics.lineTo(0, 0); triangle.graphics.endFill(); triangle.x = 200; triangle.y = 50; triangle.z = 1; addChild(ellipse); addChild(triangle); ellipse.addEventListener(Event.ENTER_FRAME, ellipseEnterFrameHandler); triangle.addEventListener(Event.ENTER_FRAME, triangleEnterFrameHandler); } private function ellipseEnterFrameHandler(e:Event) { if(e.target.y > 0) { e.target.y -= 1; e.target.x -= 1; } } private function triangleEnterFrameHandler(e:Event) { e.target.transform.matrix3D.pointAt(ellipse.transform.matrix3D.position, Vector3D.X_AXIS, Vector3D.Y_AXIS); } } }
flash.geom.Utils3D.pointTowards()
prependRotation Добавление в начало инкрементного поворота к объекту Matrix3D.degreesNumberУгол поворота. axisflash.geom:Vector3DОсь или направление поворота. Обычно используются оси X_AXIS (Vector3D (1,0,0)), Y_AXIS (Vector3D (0,1,0)) и Z_AXIS (Vector3D (0,0,1)). pivotPointflash.geom:Vector3DnullТочка, которая определяет центр поворота. Точкой поворота объекта по умолчанию является точка регистрации объекта. Добавление в начало инкрементного поворота к объекту Matrix3D. Когда объект Matrix3D применяется к экранному объекту, матрица выполняет поворот перед другими преобразованиями в объекте Matrix3D.

Поворот экранного объекта определяется осью, постепенно увеличивающимся углом поворота вокруг оси и дополнительной точкой поворота для центра поворота объекта. Ось может располагаться в одном из общепринятых направлений. Наиболее часто используемыми осями являются X_AXIS (Vector3D (1,0,0)), Y_AXIS (Vector3D (0,1,0)) и Z_AXIS (Vector3D (0,0,1)). В авиационной терминологии поворот вокруг оси y называется «рысканием». Поворот вокруг оси x называется «тангажом». Поворот вокруг оси z называется «креном».

Порядок преобразования учитывается. Эффект преобразования поворота с последующим перемещением отличается от перемещения с последующим поворотом.

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

Когда преобразование метода prependRotation() применяется к объекту Matrix3D экранного объекта, кэшированные значения свойств поворота экранного объекта становятся недействительными.

Одним из способов вращения экранного объекта вокруг определенной точки относительно его расположения является настройка перемещения объекта в заданную точку, вращение объекта с использованием метода prependRotation() и обратное перемещение объекта в исходное положение. В следующем примере трехмерный экранный объект myObject осуществляет вращение по оси y вокруг точки с координатами (10,10,0).

myObject.z = 1; myObject.transform.matrix3D.prependTranslation(10,10,0); myObject.transform.matrix3D.prependRotation(1, Vector3D.Y_AXIS); myObject.transform.matrix3D.prependTranslation(-10,-10,0);
В следующем примере пользователь может двигать мышь, чтобы заставить эллипс вращаться вокруг осей x и y. Эллипс рисуется с точкой регистрации в центре. Эллипс вращается вокруг оси y, используя координату x мыши. Эллипс вращается вокруг оси x, используя координату y мыши. package { import flash.display.MovieClip; import flash.display.Shape; import flash.geom.*; import flash.events.MouseEvent; public class Matrix3DprependRotationExample extends MovieClip { private var ellipse:Shape = new Shape(); public function Matrix3DprependRotationExample():void { ellipse.graphics.beginFill(0xFF0000); ellipse.graphics.lineStyle(2); ellipse.graphics.drawEllipse(-50, -40, 100, 80); ellipse.graphics.endFill(); ellipse.x = (this.stage.stageWidth / 2); ellipse.y = (this.stage.stageHeight / 2); ellipse.z = 1; addChild(ellipse); stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); } private function mouseMoveHandler(e:MouseEvent):void { var y:int; var x:int; if(e.localX > ellipse.x) { y = (Math.round(e.localX) / 100); } else { y = -(Math.round(e.localX) / 10); } if(e.localY > ellipse.y) { x = (Math.round(e.localY) / 100); } else { x = -(Math.round(e.localY) / 100); } ellipse.transform.matrix3D.prependRotation(y, Vector3D.Y_AXIS); ellipse.transform.matrix3D.prependRotation(x, Vector3D.X_AXIS); } } }
appendRotation()
prependScale Добавление в начало инкрементного изменения масштаба вдоль осей x, y и z к объекту Matrix3D.xScaleNumberКоэффициент, используемый для масштабирования объекта вдоль оси x. yScaleNumberКоэффициент, используемый для масштабирования объекта вдоль оси y. zScaleNumberКоэффициент, используемый для масштабирования объекта по оси z. Добавление в начало инкрементного изменения масштаба вдоль осей x, y и z к объекту Matrix3D. Когда объект Matrix3D применяется к экранному объекту, матрица выполняет масштабирование перед другими преобразованиями в объекте Matrix3D. Изменения выполняются относительно объекта, то есть относительно координатной системы исходного положения и ориентации. По умолчанию используется коэффициент масштабирования, равный (1.0, 1.0, 1.0).

Масштаб определяется как набор трех инкрементных изменений вдоль трех осей (x,y,z). Каждую ось можно умножить на различное число. При применении изменений масштаба к экранному объекту размер объекта увеличивается или уменьшается. Например, установка осей x, y и z на значение 2 увеличивает размер объекта вдвое, тогда как установка этих осей на значение 0.5 уменьшает размер в два раза. Чтобы преобразование масштаба выполнялось только относительно определенной оси, необходимо задать для остальных параметров значения 1. Значение 1 параметра означает, что изменение масштаба вдоль заданной оси выполняться не будет.

Метод prependScale() можно использовать для изменения размеров, а также для управления искажениями, такими как укорочение или удлинение экранного объекта. Он также может использоваться для увеличения или уменьшения масштаба определенного местоположения. Преобразования масштаба выполняются автоматически во время поворота и перемещения экранного объекта.

Порядок преобразования учитывается. Эффект масштабирования с последующим перемещением отличается от эффекта перемещения с последующим преобразованием масштаба.

appendScale()
prependTranslation Добавление в начало инкрементного перемещения, изменения положения вдоль осей x, y и z, к объекту Matrix3D.xNumberИнкрементное перемещение по оси x. yNumberИнкрементное перемещение по оси y. zNumberИнкрементное перемещение по оси z. Добавление в начало инкрементного перемещения, изменения положения вдоль осей x, y и z, к объекту Matrix3D. Когда объект Matrix3D применяется к экранному объекту, матрица выполняет изменения перемещения перед другими преобразованиями в объекте Matrix3D.

Перемещение определяет расстояние, на которое передвигается экранный объект из текущего положения вдоль осей x, y и z. Метод prependTranslation() задает перемещение как набор трех инкрементных изменений положения вдоль трех осей (x,y,z). Для выполнения изменения перемещения только вдоль определенной оси необходимо задать для остальных параметров нулевые значения. Нулевое значение параметра означает, что изменение вдоль заданной оси выполняться не будет.

Изменения перемещения не являются абсолютными. Эффект относится к объекту, то есть относительно координатной системы исходного положения и ориентации. Для выполнения абсолютного изменения матрицы преобразования необходимо использовать метод recompose(). Порядок преобразования также учитывается. Эффект преобразования перемещения, за которым следует поворот, отличается от преобразования поворота с последующим перемещением. При использовании метода prependTranslation() экранный объект продолжает перемещаться лицевой стороной вперед вне зависимости от других преобразований. Например, если экранный объект был повернут лицевой стороной к положительной оси x, перемещение объекта продолжится в направлении, заданном в методе prependTranslation(), вне зависимости от поворота объекта. Для выполнения изменения перемещения после других преобразований необходимо использовать метод appendTranslation().

В следующем примере пользователь может заставить эллипс переместиться вверх по оси y рабочей области, используя мышь. При наведении курсора мыши на эллипс он перемещается на 10 координат вверх по оси y. Если убрать курсор с эллипса до того, как он достиг верха, он снова переместится на 10 координат вверх по оси y. После того как эллипс достигнет верха, он переместится обратно в низ рабочей области. package { import flash.display.MovieClip; import flash.display.Sprite; import flash.geom.*; import flash.events.MouseEvent; public class Matrix3DprependTranslationExample extends MovieClip { private var ellipse:Sprite = new Sprite(); public function Matrix3DprependTranslationExample():void { ellipse.x = this.stage.stageWidth / 2; ellipse.y = this.stage.stageHeight - 100; ellipse.z = 1; ellipse.graphics.beginFill(0xFF0000); ellipse.graphics.lineStyle(2); ellipse.graphics.drawEllipse(0, 0, 60, 50); ellipse.graphics.endFill(); addChild(ellipse); ellipse.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); ellipse.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); } private function mouseOverHandler(e:MouseEvent):void { if(ellipse.y > 0) { ellipse.transform.matrix3D.prependTranslation(0, -10, 0); } } private function mouseOutHandler(e:MouseEvent):void { if(ellipse.y > 0) { ellipse.transform.matrix3D.prependTranslation(0, -10, 0); } else { ellipse.transform.matrix3D.prependTranslation(0, (this.stage.stageHeight - 100), 0); } } } }
appendTranslation()
prepend Вставка матрицы в начало путем умножения текущего объекта Matrix3D на другой объект Matrix3D.rhsflash.geom:Matrix3DПравосторонняя матрица, на которую умножается текущий объект Matrix3D. Вставка матрицы в начало путем умножения текущего объекта Matrix3D на другой объект Matrix3D. Результат объединяет оба преобразования матрицы.

Умножение матриц отличается от сложения матриц. Умножение матриц не является коммутативным. Другими словами, A, умноженное на Б, не равно Б, умноженному на А. При использовании метода prepend() умножение выполняется с правой стороны, то есть объект Matrix3D rhs находится справа от оператора умножения.

thisMatrix = thisMatrix ~~ rhs

При помощи метода prepend() осуществляются изменения относительно пространства объекта. Другими словами, они всегда выполняются относительно исходной координатной системы объекта.

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

append()
recompose Задает параметры перемещения, поворота и масштабирования матрицы преобразования.Возвращает false, если любой из элементов масштабирования равен нулю. BooleancomponentsВектор из трех объектов Vector3D, заменяющих элементы перемещения, поворота и масштабирования объекта Matrix3D. orientationStyleStringeulerAnglesНеобязательный параметр, определяющий стиль ориентации, используемый для матрицы преобразования. Три типа стиля ориентации: eulerAngles (константа EULER_ANGLES), axisAngle (константа AXIS_ANGLE) и quaternion (константа QUATERNION). Для получения дополнительной информации о другом стиле ориентации см. класс geom.Orientation3D. Задает параметры перемещения, поворота и масштабирования матрицы преобразования. В отличие от инкрементных изменений, выполняемых свойствами поворота экранного объекта или методами поворота объекта Matrix3D изменения, выполняемые методом recompose(), являются абсолютными. Метод recompose() перезаписывает преобразование матрицы.

Чтобы модифицировать преобразование матрицы с использованием абсолютной родительской системой координат, получите параметры при помощи метода decompose() и внесите соответствующие изменения. Затем можно применить к объекту Matrix3D измененное преобразование при помощи метода recompose().

Параметр метода recompose() задает стиль ориентации, который использовался для преобразования. По умолчанию используется ориентация eulerAngles, которая определяет ориентацию с тремя различными углами поворота вокруг каждой оси. Повороты выполняются последовательно, и ось каждого поворота не изменяется. С помощью свойств поворота осей экранного объекта выполняется преобразование стиля ориентации эйлеровых углов (Euler Angles). Другими вариантами стиля ориентации являются axisAngle и quaternion. Для определения ориентации межосевых улов (Axis Angle) используется комбинация оси и угла. Ось, вокруг которой вращается объект, является единичным вектором, который представляет направление. Угол представляет величину поворота относительно вектора. Направление также определяет расположение лицевой стороны экранного объекта, а угол — направление лицевой стороны вверх. В методах appendRotation() и prependRotation() используется ориентация межосевого угла. В ориентации кватерниона используются комплексные числа и четвертый элемент вектора. Ориентация представляется тремя осями поворота (x,y,z) и углом поворота (w). В методе interpolate() используется кватернион.

flash.geom.Orientation3Ddecompose()Vector
transformVector Матрица преобразования используется для преобразования объекта Vector3D из одних пространственных координат в другие.Объект Vector3D с преобразованными координатами. flash.geom:Vector3Dvflash.geom:Vector3DОбъект Vector3D с координатами, которые подлежат преобразованию. Матрица преобразования используется для преобразования объекта Vector3D из одних пространственных координат в другие. В возвращенном объекте Vector3D содержатся новые координаты, полученные после преобразования. Все преобразования матрицы, включая перемещение, применяются к объекту Vector3D.

Если результат метода transformVector() был применен к положению экранного объекта, будет изменено только положение экранного объекта. Элементы поворота и масштабирования экранного объекта не изменяются.

transformVectors()deltaTransformVector()
transformVectors Матрица преобразования используется для преобразования вектора чисел из одного пространства координат в другое.vinВектор чисел, в котором каждые три числа представляют трехмерную координату (x,y,z), подлежащую преобразованию. voutВектор чисел, в котором каждые три числа представляют трехмерную преобразованную координату (x,y,z). Матрица преобразования используется для преобразования вектора чисел из одного пространства координат в другое. Метод tranformVectors() выполняет чтение каждой тройки чисел в объекте вектора vin в виде трехмерной координаты (x,y,z) и размещает преобразованную трехмерную координату в объекте вектора vout. Все преобразования матрицы, включая перемещение, применяются к объекту вектора vin. Можно использовать метод transformVectors() для визуализации и преобразования трехмерного объекта в виде петли. Петля — это набор вершин, определяющий форму объекта. transformVector()deltaTransformVector()Vectortranspose Преобразование текущего объекта Matrix3D в матрицу, в которой выполнена перестановка строк и столбцов. Преобразование текущего объекта Matrix3D в матрицу, в которой выполнена перестановка строк и столбцов. Например, если в свойстве rawData текущего объекта Matrix3D содержатся следующие шестнадцать чисел — 1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34, метод transpose() выполняет чтение каждых четырех элементов в виде строк и преобразует строки в столбцы. Результатом будет матрица, имеющая значения rawData: 1,11,21,31,2,12,22,32,3,13,23,33,4,14,24,34.

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

Ортогональная матрица является квадратной матрицей, транспонирование которой равнозначно обращению.

determinant Число, которое определяет, является ли матрица обратимой.Number Число, которое определяет, является ли матрица обратимой.

Объект Matrix3D должен быть обратимым. Свойство determinant можно использовать, чтобы сделать объект Matrix3D обратимым. Если определитель равен нулю, обратная матрица не существует. Например, если вся строка или весь столбец матрицы равен нулю или две строки или два столбца матрицы равны, то свойство determinant имеет нулевое значение. Определитель также используется для решения серий уравнений.

Только для квадратной матрицы, такой как класс Matrix3D, предусмотрен определитель.

invert()
position Объект Vector3D, в котором хранится положение, трехмерная координата (x,y,z) экранного объекта в системе координат преобразования.flash.geom:Vector3D Объект Vector3D, в котором хранится положение, трехмерная координата (x,y,z) экранного объекта в системе координат преобразования. Свойство position позволяет получить немедленный доступ к вектору перемещения матрицы экранного объекта без необходимости разбиения и восстановления матрицы.

С помощью свойства position можно получить и настроить элементы перемещения матрицы преобразования.

appendTranslation()prependTranslation()
rawData Вектор из шестнадцати чисел, в котором каждые четыре элемента могут представлять строку или столбец матрицы 4x4. Вектор из шестнадцати чисел, в котором каждые четыре элемента могут представлять строку или столбец матрицы 4x4.

Исключение выдается, если свойство rawData задано для необратимой матрицы. Объект Matrix3D должен быть обратимым. Если требуется необратимая матрица, создайте подкласс объекта Matrix3D.

Вектор
Transform Класс Transform обеспечивает доступ к свойствам настройки цвета, а также к объектам двух- или трехмерного преобразования, которые можно применить к экранному объекту.Обеспечивает доступ к настройкам цвета, а также к объектам и матрицам двух- или трехмерного преобразования, которые можно применить к экранному объекту. Object Класс Transform обеспечивает доступ к свойствам настройки цвета, а также к объектам двух- или трехмерного преобразования, которые можно применить к экранному объекту. Во время преобразования цвет или ориентация и положение экранного объекта меняются (смещаются) относительно текущих значений или координат на новые значения или координаты. Класс Transform также собирает данные о преобразовании цвета и двухмерной матрицы, которые применяются к экранному объекту и всем его вышестощим объектам. К этим комбинированным преобразованиям можно получить доступ через свойства concatenatedColorTransform и concatenatedMatrix.

Для применения преобразований цвета: создайте объект ColorTransform, задайте настройки цвета, используя методы и свойства объекта, затем назначьте свойство colorTransformation свойства transform экранного объекта новому объекту ColorTransformation.

Для применения двухмерных преобразований: создайте объект Matrix, задайте двухмерное преобразование матрицы, затем назначьте свойство transform.matrix экранного объекта новому объекту Matrix.

Для применения трехмерных преобразований: начните с создания трехмерного экранного объекта. Трехмерный экранный объект имеет значение свойства z, отличное от нуля. Создавать объект Matrix3D не требуется. Объект Matrix3D создается автоматически для всех трехмерных объектов, когда вы присваиваете значение z экранному объекту. Доступ к объекту Matrix3D экранного объекта можно получить через свойство transform экранного объекта. При помощи методов класса Matrix3D можно добавлять новые или модифицировать существующие параметры преобразования. Можно также создать пользовательский объект Matrix3D, задать элементы преобразования пользовательского объекта Matrix3D, затем назначить новый объект Matrix3D экранному объекту при помощи свойства transform.matrix.

Для модификации перспективной проекции рабочей области или корневого объекта: при помощи свойства transform.matrix корневого экранного объекта получите доступ к объекту PerspectiveProjection. Или примените к экранному объекту другие свойства перспективной проекции, задав свойства перспективной проекции для родительского элемента экранного объекта. Дочерний экранный объект унаследует новые свойства. А именно, создайте объект PerspectiveProjection и задайте его свойства, затем назначьте объект PerspectiveProjection свойству perspectiveProjection свойства transform родительского экранного объекта. Заданное преобразование проекции будет применено ко всем трехмерным дочерним элементам экранного объекта.

Так как и объект PerspectiveProjection, и объект Matrix3D выполняют перспективные преобразования, не назначайте оба эти объекта экранному объекту одновременно. Используйте объект PerspectiveProjection для изменения фокусного расстояния и центра проекции. Для расширенного управления перспективным преобразованием создайте объект перспективной проекции Matrix3D.

В следующем примере класс TransformExample используется для наклона нижней стороны спрайта, заливка которого выполнена с применением градиентного шаблона. При каждом щелчке квадрата мышью в приложении выполняется преобразование спрайта путем выполнения наклона:
  1. Конструктор TransformExample() создает новый объект спрайта с именем target.
  2. Конструктор TransformExample() вызывает метод draw(), который рисует градиентный квадрат в спрайте.
  3. Конструктор TransformExample() добавляет прослушиватель событий щелчка для спрайта, который обрабатывается методом clickHandler().
  4. Метод clickHandler() создает новый объект Matrix, skewMatrix, настроенный для применения наклона. Другая матрица, tempMatrix, назначается текущей матрице преобразования спрайта, а затем она комбинируется с методом skewMatrix с помощью метода concat(). Эта матрица назначается свойству transform.matrix квадратного спрайта. При каждом щелчке квадрата мышью вызывается метод clickHandler() и изменяется форма квадрата путем его наклона.
  5. Кроме того, метод clickHandler() создает новый объект ColorTransform. Для свойства redOffset нового объекта ColorTransform задается текущее значение redOffset, увеличенное на 25. Таким же образом значение свойства blueOffset уменьшается на 25. При каждом щелчке цвет спрайта изменяется.
package { import flash.display.Sprite; import flash.display.GradientType; import flash.geom.Matrix; import flash.geom.ColorTransform; import flash.events.MouseEvent; public class TransformExample extends Sprite { public function TransformExample() { var target:Sprite = new Sprite(); draw(target); addChild(target); target.useHandCursor = true; target.buttonMode = true; target.addEventListener(MouseEvent.CLICK, clickHandler) } public function draw(sprite:Sprite):void { var red:uint = 0xFF0000; var green:uint = 0x00FF00; var blue:uint = 0x0000FF; var size:Number = 100; sprite.graphics.beginGradientFill(GradientType.LINEAR, [red, blue, green], [1, 0.5, 1], [0, 200, 255]); sprite.graphics.drawRect(0, 0, 100, 100); } public function clickHandler(event:MouseEvent):void { var skewMatrix:Matrix = new Matrix(); skewMatrix.c = 0.25; var tempMatrix:Matrix = this.transform.matrix; tempMatrix.concat(skewMatrix); this.transform.matrix = tempMatrix; var rOffset:Number = this.transform.colorTransform.redOffset + 25; var bOffset:Number = this.transform.colorTransform.blueOffset - 25; this.transform.colorTransform = new ColorTransform(1, 1, 1, 1, rOffset, 0, bOffset, 0); } } }
flash.display.DisplayObject.transformflash.geom.ColorTransformflash.geom.Matrixflash.geom.Matrix3Dflash.geom.PerspectiveProjectiongetRelativeMatrix3D Возвращает объект Matrix3D, который может преобразовать пространство заданного экранного объекта относительно пространства текущего экранного объекта.Объект Matrix3D, который можно использовать для преобразования пространства текущего экранного объекта относительно пространства экранного объекта relativeTo. flash.geom:Matrix3DrelativeToflash.display:DisplayObjectЭкранный объект, относительно которого осуществляется преобразование. Чтобы получить объект Matrix3D относительно рабочей области, установите этот параметр на объект root или stage. Чтобы получить матрицу экранного объекта относительно мировых координат, установите этот параметр на экранный объект, к которому было применено перспективное преобразование. Возвращает объект Matrix3D, который может преобразовать пространство заданного экранного объекта относительно пространства текущего экранного объекта. Метод getRelativeMatrix3D() можно использовать для перемещения одного трехмерного экранного объекта относительно другого трехмерного экранного объекта. flash.geom.Matrix3DcolorTransform Объект ColorTransform содержит значения для универсальной коррекции цветов экранного объекта.flash.geom:ColorTransformОбъект colorTransform является нулевым при добавлении TypeErrorTypeError Объект ColorTransform содержит значения для универсальной коррекции цветов экранного объекта. flash.geom.ColorTransformconcatenatedColorTransform Объект ColorTransform, представляющий объединенные преобразования цвета, применяемые к экранному объекту и всем его родительским объектам, вплоть до корневого уровня.flash.geom:ColorTransform Объект ColorTransform, представляющий объединенные преобразования цвета, применяемые к экранному объекту и всем его родительским объектам, вплоть до корневого уровня. Если различные преобразования цвета применены на разных уровнях, для этого свойства выполняется сцепление всех этих преобразований для создания одного объекта ColorTransform. flash.geom.ColorTransformconcatenatedMatrix Объект Matrix, представляющий объединенные матрицы преобразования экранного объекта и всех его родительских объектов, вплоть до корневого уровня.flash.geom:Matrix Объект Matrix, представляющий объединенные матрицы преобразования экранного объекта и всех его родительских объектов, вплоть до корневого уровня. Если различные матрицы преобразования применены на разных уровнях, для этого свойства выполняется сцепление этих матриц в одну матрицу. Также, для выполняемого в обозревателе содержимого SWF, размер которого можно изменить, это свойство является показателем разницы между координатами рабочей области и координатами окна при изменении размера окна. Таким образом, это свойство преобразует локальные координаты в координаты окна, которые могут не совпадать с пространством координат объекта Stage. matrix3D Обеспечивает доступ к объекту Matrix3D трехмерного экранного объекта.flash.geom:Matrix3D Обеспечивает доступ к объекту Matrix3D трехмерного экранного объекта. Класс Matrix3D представляет матрицу преобразования, которая определяет положение и ориентацию экранного объекта. Кроме того, класс Matrix3D позволяет выполнять перспективную проекцию.

Если свойству matrix задано значение (не null), свойство matrix3D имеет значение null. Если свойству matrix3D задано значение (не null), свойство matrix имеет значение null.

flash.geom.Matrix3D
matrix Объект Matrix, содержащий значения, влияющие на масштабирование, поворот и перемещение экранного объекта.flash.geom:MatrixМатрица является нулевой при добавлении TypeErrorTypeError Объект Matrix, содержащий значения, влияющие на масштабирование, поворот и перемещение экранного объекта.

Если свойству matrix задано значение (не null), свойство matrix3D имеет значение null. Если свойству matrix3D задано значение (не null), свойство matrix имеет значение null.

flash.geom.Matrix
perspectiveProjection Обеспечивает доступ к объекту PerspectiveProjection трехмерного экранного объекта.flash.geom:PerspectiveProjection Обеспечивает доступ к объекту PerspectiveProjection трехмерного экранного объекта. При помощи объекта PerspectiveProjection можно модифицировать перспективное преобразование рабочей области или назначать перспективное преобразование всем трехмерным дочерним элементам экранного объекта.

Объект PerspectiveProjection по умолчанию назначается корневому объекту на основе поля обзора и соотношения сторон (размеров) рабочей области.

flash.geom.PerspectiveProjection
pixelBounds Объект Rectangle, определяющий ограничительный прямоугольник экранного объекта в рабочей области.flash.geom:Rectangle Объект Rectangle, определяющий ограничительный прямоугольник экранного объекта в рабочей области.
Matrix Класс Matrix представляет матрицу преобразования, определяющую способ сопоставления точек из одного пространства координат с точками в другом пространстве координат.Стандартный класс двумерных однородных матриц. Object Класс 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. Эффективными значениями матрицы являются:

Можно получить и настроить значения остальных шести свойств объекта 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.

В следующем примере показано, как можно использовать класс 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); } } }
flash.display.DisplayObject.transformflash.geom.Transformflash.display.BitmapData.draw()flash.display.Graphics.beginBitmapFill()flash.display.Graphics.beginGradientFill()flash.display.Graphics.lineGradientStyle()Matrix Создает новый объект Matrix с заданными параметрами.aNumber1Значение, от которого зависит размещение пикселей вдоль оси x при масштабировании или повороте изображения. bNumber0Значение, от которого зависит размещение пикселей вдоль оси y при повороте или наклоне изображения. cNumber0Значение, от которого зависит размещение пикселей вдоль оси x при повороте или наклоне изображения. dNumber1Значение, от которого зависит размещение пикселей вдоль оси y при масштабировании или повороте изображения. txNumber0Расстояние, на которое перемещается каждая точка вдоль оси x. tyNumber0Расстояние, на которое перемещается каждая точка вдоль оси y. Создает новый двухмерный объект Matrix. Создает новый объект Matrix с заданными параметрами. В матричном представлении свойства упорядочиваются следующим образом:

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

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

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

В следующем примере матрица 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 Возвращает новый объект Matrix, который является клоном данной матрицы с точной копией содержащегося в ней объекта.Объект Matrix. flash.geom:MatrixВозвращает новый объект Matrix, который является копией текущей матрицы. Возвращает новый объект Matrix, который является клоном данной матрицы с точной копией содержащегося в ней объекта. concat Сцепляет матрицу с текущей матрицей, фактически объединяя геометрические искажения двух матриц.mflash.geom:MatrixМатрица, которая будет сцеплена с исходной матрицей. Сцепляет матрицу с текущей матрицей, фактически объединяя геометрические искажения двух матриц. В математическом представлении сцепление двух матриц равнозначно сложению матриц с использованием умножения.

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

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

createBox Включает параметры для масштабирования, поворота и перемещения.scaleXNumberКоэффициент масштабирования по горизонтали. scaleYNumberКоэффициент масштабирования по вертикали. rotationNumber0Угол поворота (в радианах). txNumber0Число пикселей для перемещения вправо вдоль оси x. tyNumber0Число пикселей для перемещения вниз вдоль оси y. Создает объект Matrix со значениями масштабирования, поворота и преобразования. Включает параметры для масштабирования, поворота и перемещения. При применении к матрице задает матричные значения на основе этих параметров.

С помощью метода 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);
В следующем примере значения масштаба по оси 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; } } }
flash.display.Graphics.beginBitmapFill()
createGradientBox Создает особый стиль матрицы, ожидаемый методом beginGradientFill() и lineGradientStyle класса Graphics.widthNumberШирина градиентного прямоугольника. heightNumberВысота градиентного прямоугольника. rotationNumber0Угол поворота (в радианах). txNumber0Расстояние перемещения (в пикселях) вправо вдоль оси x. Это значение является коррекцией с половинным значением параметра width. tyNumber0Расстояние перемещения (в пикселях) вниз по оси y. Это значение является коррекцией с половинным значением параметра height. Создает особый стиль матрицы, ожидаемый методом beginGradientFill() класса Graphics. Создает особый стиль матрицы, ожидаемый методом 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;
В следующем примере значения масштаба по оси 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); } } }
flash.display.Graphics.beginGradientFill()flash.display.Graphics.lineGradientStyle()
deltaTransformPoint Для точки в пространстве координат до преобразования возвращает ее координаты после преобразования.Точка, полученная в результате применения преобразования матрицы. flash.geom:Pointpointflash.geom:PointТочка, для которой необходимо получить результат преобразования матрицы. Для точки в пространстве координат до преобразования возвращает ее координаты после преобразования. В отличие от стандартного преобразования, применяемого с помощью метода transformPoint(), в преобразовании методом deltaTransformPoint() не учитываются параметры перемещения tx и ty. identity Задает каждому свойству матрицы значение, приводящее к нулевому преобразованию. Задает каждому свойству матрицы значение, приводящее к нулевому преобразованию. Объект, преобразованный с применением единичной матрицы, идентичен исходному объекту.

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

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

invert Выполняет обратное преобразование исходной матрицы. Выполняет обратное преобразование исходной матрицы. Можно применить обратную матрицу к объекту для отмены преобразования, выполненного при применении исходной матрицы. В следующем примере создается объект 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 Применяет преобразование поворотом к объекту Matrix.angleNumberУгол поворота (в радианах). Применяет преобразование поворотом к объекту Matrix.

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

scale Применяет преобразование масштабированием к объекту Matrix.sxNumberКоэффициент, используемый для масштабирования объекта вдоль оси x. syNumberКоэффициент, используемый для масштабирования объекта вдоль оси y. Применяет преобразование масштабированием к объекту Matrix. Ось x умножается на значение sx, а ось y - на значение sy.

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

toString Возвращает текстовое значение, содержащее список свойств объекта Matrix.Строка со значениями свойств объекта Matrix: a, b, c, d, tx и ty. StringВозвращает текстовое значение, содержащее список свойств объекта Matrix. Возвращает текстовое значение, содержащее список свойств объекта Matrix. transformPoint Возвращает результат применения геометрического преобразования, представленного объектом Matrix в заданной точке.Точка, полученная в результате применения преобразования объекта Matrix. flash.geom:Pointpointflash.geom:PointТочка, для которой необходимо получить результат преобразования объекта Matrix. Возвращает результат геометрического преобразования объекта Point. Возвращает результат применения геометрического преобразования, представленного объектом Matrix в заданной точке. translate Перемещает матрицу вдоль осей x и y, как задано параметрами dx и dy.dxNumberЗначение перемещения вправо по оси x (в пикселях). dyNumberЗначение перемещения вниз по оси y (в пикселях). Перемещает матрицу вдоль осей x и y.

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

Перемещает матрицу вдоль осей x и y, как задано параметрами dx и dy.
a Значение, от которого зависит размещение пикселей вдоль оси x при масштабировании или повороте изображения.NumberЗначение, от которого зависит размещение пикселей вдоль оси x при масштабировании или повороте изображения. Значение, от которого зависит размещение пикселей вдоль оси 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 Значение, от которого зависит размещение пикселей вдоль оси y при повороте или наклоне изображения.NumberЗначение, от которого зависит размещение пикселей вдоль оси y при повороте или наклоне изображения. Значение, от которого зависит размещение пикселей вдоль оси 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 Значение, от которого зависит размещение пикселей вдоль оси x при повороте или наклоне изображения.NumberЗначение, от которого зависит размещение пикселей вдоль оси x при повороте или наклоне изображения. Значение, от которого зависит размещение пикселей вдоль оси 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 Значение, от которого зависит размещение пикселей вдоль оси y при масштабировании или повороте изображения.NumberЗначение, от которого зависит размещение пикселей вдоль оси y при масштабировании или повороте изображения. Значение, от которого зависит размещение пикселей вдоль оси 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 Расстояние, на которое перемещается каждая точка вдоль оси x.NumberРасстояние, на которое перемещается каждая точка вдоль оси x. Расстояние, на которое перемещается каждая точка вдоль оси 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 Расстояние, на которое перемещается каждая точка вдоль оси y.NumberРасстояние, на которое перемещается каждая точка вдоль оси y. Расстояние, на которое перемещается каждая точка вдоль оси y. В следующем примере показано создание объекта Matrix myMatrix и настройка его значения ty. import flash.geom.Matrix; var myMatrix:Matrix = new Matrix(); trace(myMatrix.ty); // 0 myMatrix.ty = 50; trace(myMatrix.ty); // 50
Rectangle Объект Rectangle представляет собой область, которая определяется расположением, задаваемым точкой левого верхнего угла (x, y), шириной и высотой.Объект Rectangle представляет собой область, которая определяется расположением, задаваемым точкой левого верхнего угла (x, y), шириной и высотой. Object Объект Rectangle представляет собой область, которая определяется расположением, задаваемым точкой левого верхнего угла (x, y), шириной и высотой.

Свойства x, y, width и height класса Rectangle независимы друг от друга; изменение значения одного свойства не влияет на значения других свойств. Однако свойства right и bottom полностью связаны с этими четырьмя свойствами. Например, при изменении значения свойства right изменяется значение свойства width; при изменении свойства bottom изменяется значение свойства height.

В следующих методах и свойствах используются объекты Rectangle:

  • Методы applyFilter(), colorTransform(), copyChannel(), copyPixels(), draw(), fillRect(), generateFilterRect(), getColorBoundsRect(), getPixels(), merge(), paletteMap(), pixelDisolve(), setPixels(), threshold() и свойство rect класса BitmapData.
  • Методы getBounds(), getRect() и свойства scrollRect, scale9Grid класса DisplayObject.
  • Метод getCharBoundaries() класса TextField.
  • Свойство pixelBounds класса Transform.
  • Параметр bounds для метода startDrag() класса Sprite.
  • Параметр printArea метода addPage() класса PrintJob.

Конструктор new Rectangle() можно использовать для создания объекта Rectangle.

Примечание. Класс Rectangle не определяет экранный объект прямоугольной формы. Чтобы нарисовать объект прямоугольной формы на экране, необходимо использовать метод drawRect() класса Graphics.

В следующем примере класс RectangleExample используется для создания трех новых объектов Rectangle с различными координатами x,y и различными значениями высоты и ширины, а затем метод trace() используется для подтверждения успешного создания экземпляров Rectangle. Далее логическая переменная isContained назначается результату вызова метода containsRect(), который определяет, что второй прямоугольник не полностью заключает в себя третий прямоугольник. package { import flash.display.Sprite; import flash.geom.Rectangle; public class RectangleExample extends Sprite { public function RectangleExample() { var firstRect:Rectangle = new Rectangle(); trace(firstRect); // (x=0, y=0, w=0, h=0) var secondRect:Rectangle = new Rectangle(1, 3, 11, 13); trace(secondRect); // (x=1, y=3, w=11, h=13) var thirdRect:Rectangle = new Rectangle(5, 8, 17, 19); trace(thirdRect); // (x=5, y=8, w=17, h=19) var isContained:Boolean = secondRect.containsRect(thirdRect); trace(isContained); // false } } }
flash.display.DisplayObject.scrollRectflash.display.BitmapDataflash.display.DisplayObjectflash.display.NativeWindowflash.text.TextField.getCharBoundaries()flash.geom.Transform.pixelBoundsflash.display.Sprite.startDrag()flash.printing.PrintJob.addPage()Rectangle Создает новый объект Rectangle левый верхний угол которого задан параметрами x и y, а также с заданными шириной и высотой.xNumber0Координата x левого верхнего угла прямоугольника. yNumber0Координата y левого верхнего угла прямоугольника. widthNumber0Ширина прямоугольника в пикселях. heightNumber0Высота прямоугольника в пикселях. Создает новый объект Rectangle левый верхний угол которого задан параметрами x и y, а также с заданными шириной и высотой. Создает новый объект Rectangle левый верхний угол которого задан параметрами x и y, а также с заданными width и height. Если эта функция вызвана без параметров, создается прямоугольник, для которого значения свойств x, y, width и height равны 0. xywidthheightclone Возвращает новый объект Rectangle с такими же значениями свойств x, y, width и height, как и у исходного объекта Rectangle.Новый объект Rectangle с такими же значениями свойств x, y, width и height, как и у исходного объекта Rectangle. flash.geom:RectangleВозвращает копию данного объекта Rectangle. Возвращает новый объект Rectangle с такими же значениями свойств x, y, width и height, как и у исходного объекта Rectangle. xywidthheightcontainsPoint Определяет, будет ли указанная точка находится в области прямоугольника, задаваемой этим объектом Rectangle.Значение true возвращается, если объект Rectangle содержит указанную точку; в противном случае возвращается false. Booleanpointflash.geom:PointТочка, представленная координатами x и y. Определяет, находится ли заданная точка внутри прямоугольной области, заданной данным объектом Rectangle с объектом Point в качестве параметра. Определяет, будет ли указанная точка находится в области прямоугольника, задаваемой этим объектом Rectangle. Этот метод аналогичен методу Rectangle.contains(), за исключением того, что в нем объект Point используется как параметр. contains()flash.geom.PointcontainsRect Определяет, является ли объект Rectangle, задаваемый параметром rect, частью данного объекта Rectangle.Возвращается значение true, если заданный объект Rectangle является частью данного объекта Rectangle; в противном случае возвращается false. Booleanrectflash.geom:RectangleПроверенный объект Rectangle. Определяет, является ли объект Rectangle, задаваемый параметром rect, частью данного объекта Rectangle. Определяет, является ли объект Rectangle, задаваемый параметром rect, частью данного объекта Rectangle. Можно сказать, что объект Rectangle содержит другой объект, если второй объект Rectangle полностью находится в границах первого объекта. contains Определяет, будет ли указанная точка находится в области прямоугольника, задаваемой этим объектом Rectangle.Значение true возвращается, если объект Rectangle содержит указанную точку; в противном случае возвращается false. BooleanxNumberКоордината x точки (положение по горизонтали). yNumberКоордината y точки (вертикальное положение). Определяет, содержится ли заданная точка внутри прямоугольной области. Определяет, будет ли указанная точка находится в области прямоугольника, задаваемой этим объектом Rectangle. flash.geom.Pointequals Определяет, является ли объект, задаваемый параметром toCompare, эквивалентом данного объекта Rectangle.Возвращается значение true, если значения свойств x, y, width и height объекта и данного объекта Rectangle полностью совпадают; в противном случае возвращается false. BooleantoCompareflash.geom:RectangleПрямоугольник, сравниваемый с данным объектом Rectangle. Определяет, является ли объект, задаваемый параметром toCompare, эквивалентом данного объекта Rectangle. Определяет, является ли объект, задаваемый параметром toCompare, эквивалентом данного объекта Rectangle. Этот метод сравнивает свойства x, y, width и height объекта с такими же свойствами данного объекта Rectangle. xywidthheightinflatePoint Увеличивает размер объекта Rectangle.pointflash.geom:PointСвойство x этого объекта Point используется для увеличения горизонтального размера объекта Rectangle. Свойство y используется для увеличения вертикального размера объекта Rectangle. Увеличивает размер объекта Rectangle с объектом Point в качестве параметра. Увеличивает размер объекта Rectangle. Этот метод аналогичен методу Rectangle.inflate(), за исключением того, что в нем объект Point используется как параметр.

В следующих двух примерах кода получается одинаковый результат:

var rect1:Rectangle = new Rectangle(0,0,2,5); rect1.inflate(2,2) var rect1:Rectangle = new Rectangle(0,0,2,5); var pt1:Point = new Point(2,2); rect1.inflatePoint(pt1)
flash.geom.Point
inflate Увеличивает размер объекта Rectangle на заданные величины (в пикселях).dxNumberЗначение, добавляемое слева и справа от объекта Rectangle. Следующее уравнение используется для вычисления новой ширины и нового положения прямоугольника: x -= dx; width += 2 ~~ dx; dyNumberЗначение, добавляемое вверху и внизу прямоугольника Rectangle. Следующее уравнение используется для вычисления новой высоты и нового положения прямоугольника: y -= dy; height += 2 ~~ dy; Увеличивает размер объекта Rectangle на заданные величины (в пикселях). Центральная точка объекта Rectangle остается неизменной, а его размеры увеличиваются слева и справа на значение dx и сверху и снизу на значение dy. xyintersection Если объект Rectangle, заданный в параметре toIntersect, пересекает этот объект Rectangle, возвращается область пересечения в виде объекта Rectangle.Объект Rectangle, равный области пересечения. Если пересечение объекта отсутствует, этот метод возвращает пустой объект Rectangle; то есть прямоугольник с нулевыми значениями свойств x, y, width и height. flash.geom:RectangletoIntersectflash.geom:RectangleСравниваемый объект Rectangle для просмотра наличия пересечений с данным объектом Rectangle. Возвращает область пересечения. Если объект Rectangle, заданный в параметре toIntersect, пересекает этот объект Rectangle, возвращается область пересечения в виде объекта Rectangle. Если пересечение отсутствует, этот метод возвращает пустой объект Rectangle с нулевыми значениями свойств.

intersects Определяет, пересекается ли объект, задаваемый параметром toIntersect, с данным объектом Rectangle.Возвращается значение true, если заданный объект пересекает данный объект Rectangle; в противном случае возвращается false. BooleantoIntersectflash.geom:RectangleОбъект Rectangle, сравниваемый с данным объектом Rectangle. Определяет, пересекается ли объект, задаваемый параметром toIntersect, с данным объектом Rectangle. Определяет, пересекается ли объект, задаваемый параметром toIntersect, с данным объектом Rectangle. Этот метод проверяет свойства x, y, width и height заданного объекта Rectangle на наличие пересечения с данным объектом Rectangle. xywidthheightisEmpty Определяет, является ли объект Rectangle пустым.Возвращается значение true, если ширина или высота объекта Rectangle меньше или равна 0; в противном случае возвращается false. Boolean Определяет, является ли объект Rectangle пустым. offsetPoint Регулирует местоположение объекта Rectangle, используя объект Point в качестве параметра.pointflash.geom:PointОбъект Point, используемый для коррекции этого объекта Rectangle. Регулирует местоположение объекта Rectangle, используя объект Point в качестве параметра. Регулирует местоположение объекта Rectangle, используя объект Point в качестве параметра. Этот метод аналогичен методу Rectangle.offset(), за исключением того, что в нем объект Point используется как параметр. flash.geom.Pointoffset Настраивает положение объекта Rectangle, как определено его верхним левым углом, на заданные значения.dxNumberПеремещает значение x объекта Rectangle на это расстояние. dyNumberПеремещает значение y объекта Rectangle на это расстояние. Регулирует местоположение объекта Rectangle. Настраивает положение объекта Rectangle, как определено его верхним левым углом, на заданные значения. setEmpty Задает для всех свойств объекта Rectangle нулевые значения.Задает всем параметрам значение 0. Задает для всех свойств объекта Rectangle нулевые значения. Объект Rectangle является пустым, если его ширина или высота меньше или равна 0.

Этот метод задает нулевые значения свойств x, y, width и height.

xywidthheight
toString Создает и возвращает строку, содержащую данные о горизонтальном и вертикальном расположении, а также о ширине и высоте объекта Rectangle.Строка, в которой перечислены значения всех следующих свойств объекта Rectangle: x, y, width и height. String Создает и возвращает строку, содержащую данные о горизонтальном и вертикальном расположении, а также о ширине и высоте объекта Rectangle. xywidthheightunion Добавляет два прямоугольника для создания нового объекта Rectangle путем заполнения горизонтального и вертикального пространства между двумя прямоугольниками.Новый объект Rectangle, который является объединением двух прямоугольников. flash.geom:RectangletoUnionflash.geom:RectangleОбъект Rectangle, добавляемый к данному объекту Rectangle. Создает новый объект Rectangle путем соединения двух прямоугольников. Добавляет два прямоугольника для создания нового объекта Rectangle путем заполнения горизонтального и вертикального пространства между двумя прямоугольниками.

Примечание. Метод union() игнорирует прямоугольники со значением 0 в качестве значения для высоты или ширины, например, var rect2:Rectangle = new Rectangle(300,300,50,0);

height Высота прямоугольника в пикселях.NumberВысота прямоугольника в пикселях. Высота прямоугольника в пикселях. Изменение значения свойства height объекта Rectangle не влияет на свойства x, y и width.

xyheight
width Ширина прямоугольника в пикселях.NumberШирина прямоугольника. Ширина прямоугольника в пикселях. Изменение значения свойства width объекта Rectangle не влияет на свойства x, y и height.

xyheight
x Координата x левого верхнего угла прямоугольника.NumberКоордината x левого верхнего угла прямоугольника. Координата x левого верхнего угла прямоугольника. Изменение значения свойства x объекта Rectangle не влияет на свойства y, width и height.

Значение свойства x равно значению свойства left.

left
y Координата y левого верхнего угла прямоугольника.NumberКоордината по оси Y левого верхнего угла. Координата y левого верхнего угла прямоугольника. Изменение значения свойства y объекта Rectangle не влияет на свойства x, width и height.

Значение свойства y равно значению свойства top.

xwidthheighttop
bottomRight Расположение правого нижнего угла объекта Rectangle, заданного значениями свойств right и bottom.flash.geom:PointРасположение правого нижнего угла объекта Rectangle, заданного свойствами right и bottom. Расположение правого нижнего угла объекта Rectangle, заданного значениями свойств right и bottom.

flash.geom.Point
bottom Сумма значений свойств y и height.NumberСумма значений свойств y и height. Сумма значений свойств y и height.

yheight
left Координата x левого верхнего угла прямоугольника.NumberКоордината x левого верхнего угла прямоугольника. Координата x левого верхнего угла прямоугольника. Изменение свойства left объекта Rectangle не влияет на свойства y и height. Однако оно влияет на свойство width, тогда как изменение значения x не влияет на свойство width.

Значение свойства left равно значению свойства x.

xywidthheight
right Сумма свойств x и width.NumberСумма свойств x и width. Сумма свойств x и width.

xwidth
size Размер объекта Rectangle, обозначенного как объект Point со значениями свойств width и height.flash.geom:PointРазмер объекта Rectangle, задаваемый в виде объекта Point со значениями размеров по высоте и ширине. Размер объекта Rectangle, обозначенного как объект Point со значениями свойств width и height. flash.geom.PointtopLeft Расположение левого верхнего угла объекта Rectangle, заданного координатами x и y точки.flash.geom:PointРасположение левого верхнего угла объекта Rectangle, заданного значениями x и y точки. Расположение левого верхнего угла объекта Rectangle, заданного координатами x и y точки.

flash.geom.Pointxy
top Координата y левого верхнего угла прямоугольника.NumberКоордината y левого верхнего угла прямоугольника. Координата y левого верхнего угла прямоугольника. Изменение свойства top объекта Rectangle не влияет на свойства x и width. Однако оно влияет на свойство height, тогда как изменение значения y не влияет на свойство height.

Значение свойства top равно значению свойства y.

xywidthheight
ColorTransform Класс ColorTransform позволяет изменять значения цвета в экранном объекте.Object Класс ColorTransform позволяет изменять значения цвета в экранном объекте. Настройку цвета или преобразование цвета можно применить ко всем четырем каналам: красный, зеленый, синий и альфа-прозрачность.

Когда объект ColorTransform применяется к экранному объекту, новое значение для каждого цветового канала вычисляется следующим образом:

  • Новое значение красного = (старое значение красного * redMultiplier) + redOffset
  • Новое значение зеленого = (старое значение зеленого * greenMultiplier) + greenOffset
  • Новое значение синего = (старое значение синего * blueMultiplier) + blueOffset
  • Новое значение альфа-канала = (старое значение альфа-канала * alphaMultiplier) + alphaOffset

Если после вычисления значение цветового канала превышает 255, для него настраивается значение 255. Если значение меньше 0, задается значение 0.

Объекты ColorTransform можно использовать следующими способами:

  • В параметре colorTransform метода colorTransform() класса BitmapData.
  • В качестве свойства colorTransform объекта Transform (который можно использовать как свойство transform экранного объекта).

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

Преобразования цветов не применяются к цвету фона фрагмента ролика (например, загруженный объект SWF). Они применяются только к изображениям и символам, прикрепленным к фрагменту ролика.

В следующем примере класс TransformExample используется для создания простого спрайта в форме квадрата с заливкой с использованием градиентного шаблона. При каждом щелчке квадрата мышью в приложении выполняется преобразование цветов квадратного спрайта, добавление значения каналу красного цвета и осветление канала синего цвета. Это можно сделать, выполнив следующие действия:
  1. Конструктор создает новый объект спрайта с именем target.
  2. Конструктор CustomButton() вызывает метод draw(), который рисует градиентный квадрат в спрайте.
  3. Конструктор CustomButton() добавляет прослушиватель событий щелчка для спрайта, который обрабатывается методом clickHandler().
  4. В методе clickHandler() два свойства заданы для свойств redOffset и blueOffset текущего преобразования цвета. Для каждого настроено значение 25. Затем свойство transform.colorTransform квадратного спрайта изменяется для использования новых значений коррекции. При каждом щелчке квадрата мышью происходит обращение к методу clickHandler() и цвет квадрата изменяется путем увеличения значения красного цвета и уменьшения значения синего цвета.
package { import flash.display.Sprite; import flash.display.GradientType; import flash.geom.ColorTransform; import flash.events.MouseEvent; public class ColorTransformExample extends Sprite { public function ColorTransformExample() { var target:Sprite = new Sprite(); draw(target); addChild(target); target.useHandCursor = true; target.buttonMode = true; target.addEventListener(MouseEvent.CLICK, clickHandler) } public function draw(sprite:Sprite):void { var red:uint = 0xFF0000; var green:uint = 0x00FF00; var blue:uint = 0x0000FF; var size:Number = 100; sprite.graphics.beginGradientFill(GradientType.LINEAR, [red, blue, green], [1, 0.5, 1], [0, 200, 255]); sprite.graphics.drawRect(0, 0, 100, 100); } public function clickHandler(event:MouseEvent):void { var rOffset:Number = transform.colorTransform.redOffset + 25; var bOffset:Number = transform.colorTransform.redOffset - 25; this.transform.colorTransform = new ColorTransform(1, 1, 1, 1, rOffset, 0, bOffset, 0); } } }
flash.geom.Transformflash.display.DisplayObject.transformflash.display.BitmapData.colorTransform()ColorTransform Создает объект ColorTransform для экранного объекта в заданными значениями цветовых каналов и значениями альфа-канала.redMultiplierNumber1.0Значение множителя красного цвета лежит в диапазоне от 0 до 1. greenMultiplierNumber1.0Значение множителя зеленого цвета лежит в диапазоне от 0 до 1. blueMultiplierNumber1.0Значение множителя синего цвета лежит в диапазоне от 0 до 1. alphaMultiplierNumber1.0Значение множителя альфа-прозрачности лежит в диапазоне от 0 до 1. redOffsetNumber0Значение коррекции для канала красного цвета находится в диапазоне от -255 до 255. greenOffsetNumber0Значение коррекции для канала зеленого цвета находится в диапазоне от -255 до 255. blueOffsetNumber0Коррекция для значения канала синего цвета находится в диапазоне от -255 до 255. alphaOffsetNumber0Коррекция для значения канала альфа-прозрачности находится в диапазоне от -255 до 255. Создает объект ColorTransform для экранного объекта. Создает объект ColorTransform для экранного объекта в заданными значениями цветовых каналов и значениями альфа-канала. concat Выполняет сцепление объекта ColorTranform, заданного параметром second, с текущим объектом ColorTransform и задает текущий объект в качестве результата, представляющего собой аддитивную (полученную сложением) комбинацию двух преобразований цвета.secondflash.geom:ColorTransformОбъект ColorTransform для комбинирования с текущим объектом ColorTransform. Выполняет сцепление объекта ColorTranform, заданного параметром second, с текущим объектом ColorTransform и задает текущий объект в качестве результата, представляющего собой аддитивную (полученную сложением) комбинацию двух преобразований цвета. При применении сцепленного объекта ColorTransform получается такой же эффект, что и при применении преобразования цвета second после преобразования цвета original. toString Форматирует объект ColorTransform и возвращает строку с описанием всех его свойств.Строка, в которой перечислены все свойства объекта ColorTransform. String Форматирует объект ColorTransform и возвращает строку с описанием всех его свойств. alphaMultiplier Десятичное значение, умножаемое на значение канала альфа-прозрачности.Number Десятичное значение, умножаемое на значение канала альфа-прозрачности.

Если значение альфа-прозрачности экранного объекта задано напрямую с помощью свойства alpha экземпляра DisplayObject, оно влияет на значение свойства alphaMultiplier свойства transform.colorTransform экранного объекта.

flash.display.DisplayObject.alpha
alphaOffset Число от -255 до 255, добавляемое к значению канала альфа-прозрачности после умножения на значение alphaMultiplier.NumberЧисло от -255 до 255, добавляемое к значению канала альфа-прозрачности после умножения на значение alphaMultiplier. Число от -255 до 255, добавляемое к значению канала альфа-прозрачности после умножения на значение alphaMultiplier. blueMultiplier Десятичное значение, умножаемое на значение синего канала.Number Десятичное значение, умножаемое на значение синего канала. blueOffset Число от -255 до 255, добавляемое к значению синего канала после умножения на значение blueMultiplier.NumberЧисло от -255 до 255, добавляемое к значению синего канала после умножения на значение blueMultiplier. Число от -255 до 255, добавляемое к значению синего канала после умножения на значение blueMultiplier. greenMultiplier Десятичное значение, умножаемое на значение зеленого канала.Number Десятичное значение, умножаемое на значение зеленого канала. greenOffset Число от -255 до 255, добавляемое к значению зеленого канала после умножения на значение greenMultiplier.NumberЧисло от -255 до 255, добавляемое к значению зеленого канала после умножения на значение greenMultiplier. Число от -255 до 255, добавляемое к значению зеленого канала после умножения на значение greenMultiplier. redMultiplier Десятичное значение, умножаемое на значение красного канала.Number Десятичное значение, умножаемое на значение красного канала. redOffset Число от -255 до 255, добавляемое к значению красного канала после умножения на значение redMultiplier.NumberЧисло от -255 до 255, добавляемое к значению красного канала после умножения на значение redMultiplier. Число от -255 до 255, добавляемое к значению красного канала после умножения на значение redMultiplier. color Значение цвета RGB для объекта ColorTransform.uint Значение цвета RGB для объекта ColorTransform.

При настройке этого свойства изменяются три значения коррекции цвета (redOffset, greenOffset и blueOffset) соответственно и для трех значений множителя цвета (redMultiplier, greenMultiplier и blueMultiplier) задается значение 0. Множитель и значения коррекции альфа-прозрачности не изменяются.

При передаче значения для этого свойства необходимо использовать формат 0xRRGGBB. Каждое значение RR, GG и BB состоит из двух шестнадцатеричных чисел, которые задают коррекцию каждого компонента цвета. Значение 0x указывает компилятору ActionScript, что число является шестнадцатеричным значением.

Point Объект Point представляет расположение в двумерной системе координат, где x соответствует горизонтальной оси, а y – вертикальной.Класс Point представляет собой расположение в двумерной системе координат. Object Объект Point представляет расположение в двумерной системе координат, где x соответствует горизонтальной оси, а y — вертикальной.

Следующий код позволяет создать точку с координатами (0,0):

var myPoint:Point = new Point();

В методах и свойствах следующих классов используются объекты Point:

  • BitmapData
  • DisplayObject
  • DisplayObjectContainer
  • DisplacementMapFilter
  • NativeWindow
  • Matrix
  • Прямоугольник

Конструктор new Point() можно использовать для создания объекта Point.

В следующем примере класс PointExample используется для создания нескольких новых объектов Point с различными координатами x,y, а затем метод trace() используется для вывода результатов различных методов класса. package { import flash.display.Sprite; import flash.geom.Point; public class PointExample extends Sprite { public function PointExample() { var point1:Point = new Point(); trace(point1); // (x=0, y=0) var point2:Point = new Point(6, 8); trace(point2); // (x=6, y=8) trace(Point.interpolate(point1, point2, 0.5)); // (x=3, y=4) trace(Point.distance(point1, point2)); // 10 trace(point1.add(point2)); // (x=6, y=8) var point3:Point = point2.clone(); trace(point2.equals(point3)); // true point3.normalize(2.5); trace(point3); // (x=1.5, y=2) trace(point2.subtract(point3)); // (x=4.5, y=6) trace(point1.offset(2, 3)); // var angle:Number = Math.PI * 2 * (30 / 360); // 30 degrees trace(Point.polar(4, angle)) // (x=3.464101615137755, y=1.9999999999999998) } } }
flash.display.BitmapDataflash.display.DisplayObjectflash.display.DisplayObjectContainerflash.filters.DisplacementMapFilterflash.geom.Matrixflash.display.NativeWindowflash.geom.RectanglePoint Создает новую точку.xNumber0Горизонтальная координата. yNumber0Вертикальная координата. Создает новую точку. Если в этот метод параметры не передаются, создается точка с координатами (0,0). add Создает новую точку путем добавления координат заданной точки к координатам текущей точки.Новая точка. flash.geom:Pointvflash.geom:PointДобавляемая точка. Создает новую точку путем добавления координат заданной точки к координатам текущей точки. clone Создает копию данного объекта Point.Новый объект Point. flash.geom:PointСоздает копию объекта Point. Создает копию данного объекта Point. distance Возвращает расстояние между точками pt1 и pt2.Расстояние между первой и второй точками. Numberpt1flash.geom:PointПервая точка. pt2flash.geom:PointВторая точка. Возвращает расстояние между точками pt1 и pt2. equals Определяет, равны ли две точки.Возвращается значение true, если объект равен данному объекту Point; false, если не равен. BooleantoCompareflash.geom:PointСравниваемая точка. Определяет, равны ли две точки. Две точки равны, если они имеют одинаковые значения x и y. interpolate Определяет точку между двумя заданными точками.Новая интерполированная точка. flash.geom:Pointpt1flash.geom:PointПервая точка. pt2flash.geom:PointВторая точка. fNumberУровень интерполяции между двумя точками. Обозначает местонахождения новой точки на линии между значениями pt1 и pt2. Если f=1, возвращается pt1; если f=0, возвращается pt2. Определяет точку между двумя заданными точками. Параметр f определяет положение новой интерполированной точки относительно двух конечных точек, заданных параметрами pt1 и pt2. Чем ближе значение параметра f к 1,0, тем ближе интерполированная точка расположена к первой точке (параметр pt1). Чем ближе значение параметра f к 0, тем ближе интерполированная точка расположена ко второй точке (параметр pt2). normalize Изменяет длину линии между точкой (0,0) и текущей точкой на заданную.Нормализованная точка. thicknessNumberЗначение масштабирования. Например, если для текущей точки заданны координаты (0,5) и выполняется нормализация до значения 1, возвращается точка с координатами (0,1). Изменяет длину линии между точкой (0,0) и текущей точкой на заданную. lengthoffset Сдвигает объект Point на заданное расстояние.dxNumberЗначение коррекции горизонтальной координаты, x. dyNumberЗначение коррекции вертикальной координаты, y. Сдвигает объект Point на заданное расстояние. Значение dx добавляется к исходному значению x для получения нового значения x. Значение dy добавляется к исходному значению y для получения нового значения y. polar Преобразует пару полярных координат в декартову точку.Точка в декартовой системе координат. flash.geom:PointlenNumberДлина координаты полярной пары. angleNumberУгол (в радианах) полярной пары. Преобразует пару полярных координат в декартову точку. lengthMath.round()subtract Создает новую точку путем вычитания координат заданной точки из координат текущей точки.Новая точка. flash.geom:Pointvflash.geom:PointВычитаемая точка. Создает новую точку путем вычитания координат заданной точки из координат текущей точки. toString Возвращает строку, содержащую значения координат по осям x и y.Строковое представление координат. StringВозвращает строку, содержащую значения координат по осям x и y. Возвращает строку, содержащую значения координат по осям x и y. Строка записана в следующем виде (x=x, y=y), поэтому при вызове метода toString() для точки с координатами 23,17 будет возвращено значение (x=23, y=17). x Горизонтальная координата точки.Number Горизонтальная координата точки. Значением по умолчанию является 0. y Вертикальная координата точки.Number Вертикальная координата точки. Значением по умолчанию является 0. length Длина линии, проходящей через точку (0,0) и эту точку.Number Длина линии, проходящей через точку (0,0) и эту точку. Point.polar()
Orientation3D В классе Orientation3D перечислены значения констант, представляющие стиль ориентации объекта Matrix3D.Object В классе Orientation3D перечислены значения констант, представляющие стиль ориентации объекта Matrix3D. Тремя типами ориентации являются: эйлеровы углы, межосевые углы и кватернион. Методы decompose и recompose объекта Matrix3D используют один из перечисленных типов для определения вращательных составляющих объекта Matrix. flash.geom.Matrix3Dflash.geom.Transformflash.geom.PerspectiveProjectionAXIS_ANGLE Для определения ориентации межосевых улов используется комбинация оси и угла.axisAngleString Для определения ориентации межосевых улов используется комбинация оси и угла. Линия или вектор, идущий от центра трехмерного шара к поверхности, является примером оси. Ось, вокруг которой вращается объект, является единичным вектором, который представляет любое возможное направление в трехмерном пространстве. Угол представляет величину поворота относительно вектора. Направление определяет расположение лицевой стороны экранного объекта, а угол поворота — направление лицевой стороны вверх. Объекты Vector3D и Matrix3D можно использовать для определения различных преобразований матрицы, а также для определения важных значений для трехмерного программирования, например расстояние до пересечения двух объектов, которое можно использовать для обнаружения простого столкновения трехмерных объектов.

В методах Matrix3D.appendRotation() и Matrix3D.prependRotation() используется ориентация межосевого угла.

flash.geom.Matrix3D.decompose()flash.geom.Matrix3D.recompose()
EULER_ANGLES По умолчанию для методов decompose() и recompose() используется ориентация типа эйлеровы углы, которая определяет ориентацию с тремя различными углами поворота вокруг каждой оси.eulerAnglesStringОпределяет ориентацию с тремя различными углами поворота вокруг каждой оси. По умолчанию для методов decompose() и recompose() используется ориентация типа эйлеровы углы, которая определяет ориентацию с тремя различными углами поворота вокруг каждой оси. Как правило, за поворотом вокруг оси x следует поворот вокруг оси y, за которым следует поворот вокруг оси z.

Эйлеровы углы могут иногда приводить к ошибкам анимации из за таких проблем, как сингулярность при вращении вокруг оси x или блокировка вращения. Например, так как при работе с эйлеровыми углами каждая ось обрабатывается отдельно, блокировка вращения может произойти при вращении вокруг двух и более осей. Оси оказываются расположенными параллельно друг другу, что приводит к получению непредвиденных результатов.

Свойства вращения оси экранного объекта выполняют вращение по типу эйлеровых углов.

flash.geom.Matrix3D.decompose()flash.geom.Matrix3D.recompose()
QUATERNION В ориентации кватерниона используются комплексные числа.quaternionStringОриентация кватерниона представляется тремя осями (x,y,z) и углом поворота (w). В ориентации кватерниона используются комплексные числа. Ориентация кватерниона представляется тремя осями поворота (x,y,z) и углом поворота (w). Кватернион обеспечивает кратчайший, наиболее эффективный контур вращения. Он также позволяет выполнять сглаживание без эффекта «шарнирного замка». Блокировка вращения может произойти, когда во время вращения вокруг двух или более осей оси оказываются расположенными параллельно друг другу, что приводит к получению непредвиденных результатов.

В методе Matrix3D.interpolate() используется кватернион.

flash.geom.Matrix3D.decompose()flash.geom.Matrix3D.recompose()
PerspectiveProjection Класс PerspectiveProjection позволяет назначать и модифицировать перспективы экранного объекта и его нижестоящих объектов.Object Класс PerspectiveProjection позволяет назначать и модифицировать перспективы экранного объекта и его дочерних объектов. Для более сложных или пользовательских преобразований перспективы используйте класс Matrix3D. Тогда как класс PerspectiveProjection содержит основные свойства пространственного представления объектов, класс Matrix3D предоставляет дополнительные возможности управления трехмерным представлением экранных объектов.

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

Объект PerspectiveProjection по умолчанию является каркасом, определенным для перспективного преобразования корневого объекта на основе поля обзора и соотношения сторон (размеров) сцены. Центр проекции, точка схода, задан в центре рабочей области, что обозначает, что трехмерные экранные объекты будут исчезать в центре рабочей области при перемещении в обратном направлении по оси z. Точкой просмотра по умолчанию является точка с координатами (0,0) при просмотре сверху вниз вдоль положительной оси z. Ось y направлена вниз экрана. Можно получить доступ к параметрам перспективной проекции экранного объекта root и изменить свойства поля обзора и центра проекции свойства perspectiveProjection с помощью свойства DisplayObject.transform экранного объекта root.

Можно изменить параметр перспективной проекции экранного объекта также посредством перспективной проекции родительского объекта. Сначала создайте объект PerspectiveProjection и задайте его свойства fieldOfView и projectionCenter. Затем назначьте объект PerspectiveProjection родительскому экранному объекту при помощи свойства DisplayObject.transform. Затем заданные матрица проекции и преобразование будут применены ко всем трехмерным дочерним элементам экранного объекта.

flash.display.DisplayObject.transformflash.geom.Transformflash.geom.Matrix3Dflash.geom.Utils3DPerspectiveProjection Создает экземпляр объекта PerspectiveProjection. Создает экземпляр объекта PerspectiveProjection. toMatrix3D Возвращает базовый объект Matrix3D экранного объекта.Базовый объект Matrix3D. flash.geom:Matrix3D Возвращает базовый объект Matrix3D экранного объекта.

В экранном объекте, например корневом объекте, можно создать объект PerspectiveProjection без необходимости определения свойства Matrix3D для его преобразования. На самом деле, объект PerspectiveProjection или Matrix3D следует использовать для определения перспективного преобразования. Если при использовании объекта PerspectiveProjection требовался объект Matrix3D, метод toMatrix3D() позволяет получить базовый объект Matrix3D экранного объекта. Например, метод toMatrix3D() можно использовать вместе с методом Utils3D.projectVectors().

flash.geom.Matrix3D
fieldOfView Указывает угол поля обзора, в градусах со значением между 0 и 180, в трехмерном пространстве.NumberУказывает угол поля обзора, в градусах со значением между 0 и 180, в трехмерном пространстве. Указывает угол поля обзора, в градусах со значением между 0 и 180, в трехмерном пространстве. Это значение определяет степень применения перспективного преобразования и искажения к трехмерному экранному объекту с ненулевой координатой по оси z.

Значение, близкое к 0 градусов, означает, что двухмерные координаты x и y экрана и трехмерные координаты x, y и z примерно одинаковы, а искажение незначительное или отсутствует. Другими словами, при маленьком угле экранный объект, движущийся вниз по оси z, имеет визуально почти тот же размер и незначительное перемещение.

Значение, близкое к 180 градусам, производит эффект объектива типа «рыбий глаз»: точки с координатой по оси z меньше 0 увеличены, а точки с координатой по оси z больше 0 уменьшены. При большом значении угла экранный объект, перемещающийся вниз по оси z, быстро изменяется в размерах и перемещается на значительное расстояние. Если для поля обзора задано значение 0 или 180, изображение отсутствует на экране.

focalLength Расстояние между исходным положением наблюдателя или точкой просмотра (0,0,0) и экранным объектом, расположенным на оси z.Number Расстояние между исходным положением наблюдателя или точкой просмотра (0,0,0) и экранным объектом, расположенным на оси z. Во время перспективного преобразования значение focalLength вычисляется динамически с использованием значений угла поля обзора и соотношения сторон рабочей области (ширина рабочей области, деленная на ее высоту). fieldOfViewprojectionCenter Двумерная точка, представляющая центр проекции, точку схода, экранного объекта.flash.geom:Point Двумерная точка, представляющая центр проекции, точку схода, экранного объекта.

Свойство projectionCenter является смещением к точке регистрации по умолчанию, расположенной в верхнем левом углу рабочей области, точка с координатами (0,0). Центр преобразования проекции по умолчанию находится в центре рабочей области, что обозначает, что трехмерные экранные объекты будут исчезать в центре рабочей области при перемещении в обратном направлении по оси z.