Во всех версиях Flash Player до Flash Player 10 и Adobe AIR до Adobe AIR 1.5 экранные объекты имели два свойства:
x
и
y
, используемые для их позиционирования в двухмерном пространстве. Начиная с версии Flash Player 10 и Adobe AIR 1.5, каждый экранный объект ActionScript имеет свойство
z
, которое позволяет располагать объект вдоль оси z, обычно используемой для представления глубины или расстояния.
В приложениях Flash Player 10 и Adobe AIR 1.5 представлена поддержка трехмерных эффектов. Тем не менее, экранные объекты по сути являются плоскими. Каждый экранный объект, такой как MovieClip или Sprite, в конечном счете визуализируется в двух измерениях в одной плоскости. Трехмерные функции позволяют размещать, перемещать, поворачивать и преобразовывать каким-либо другим способом эти плоские объекты во всех трех измерениях. Они также позволяют управлять трехмерными точками и преобразовывать их в двухмерные координаты осей x и y для проецирования трехмерных объектов на двухмерную плоскость. С помощью этих функций можно моделировать различные трехмерные эффекты.
Используемая в ActionScript трехмерная система координат отличается от других систем. При использовании двухмерных координат в ActionScript значение координаты x увеличивается при перемещении вправо вдоль оси x, а значение координаты y увеличивается при перемещении вниз по оси y. Трехмерная система координат сохраняет эти условия и добавляет ось z, значение которой увеличивается при удалении от точки обзора.
Положительные направления осей x, y и z в трехмерной системе координат ActionScript.
-
A.
-
+ ось Z
-
Б.
-
Начало координат
-
В.
-
+ ось X
-
Г.
-
+ ось Y
Примечание.
Важно помнить, что проигрыватель Flash Player и среда AIR всегда представляют трехмерное пространство в виде слоев. Это означает, что если объект A находится перед объектом В в списке отображения, то Flash Player или AIR всегда выполняет визуализацию A перед В независимо от значений по оси z для обоих объектов. Для разрешения этого конфликта между порядком элементов в списке отображения и порядком по оси z необходимо с помощью метода
transform.getRelativeMatrix3D()
сохранить слои трехмерных экранных объектов, а затем изменить их порядок. Дополнительные сведения см. в разделе «
Использование объектов Matrix3D для изменения порядка отображения
».
Следующие классы ActionScript поддерживают новые трехмерные функции:
-
Класс flash.display.DisplayObject содержит свойство
z
, а также новые свойства rotation и scaling для управления экранными объектами в трехмерном пространстве. Метод
DisplayObject.local3DToGlobal()
обеспечивает простой способ проецирования трехмерной геометрии на двухмерную плоскость.
-
Класс flash.geom.Vector3D можно использовать в качестве структуры данных для управления трехмерными точками. Он также поддерживает векторную математику.
-
Класс flash.geom.Matrix3D поддерживает сложные преобразования трехмерной геометрии, например, поворот, масштабирование и перемещение.
-
Класс flash.geom.PerspectiveProjection управляет параметрами для преобразования трехмерной геометрии в двухмерный вид.
В ActionScript имеется два разных подхода к моделированию трехмерных изображений.
-
Организация и анимация плоских объектов в трехмерном пространстве. Этот подход включает анимацию объектов отображения с использованием свойств x, y и z объектов отображения или путем присвоения значений свойствам rotation и scaling с помощью класса DisplayObject. Более сложное движение достигается при помощи объекта DisplayObject.transform.matrix3D. Объект DisplayObject.transform.perspectiveProjection позволяет настроить способ рисования объектов отображения в трехмерной перспективе. Используйте этот подход при анимации трехмерных объектов, имеющих в основном плоские поверхности. В качестве примера этого подхода можно привести галереи трехмерных изображений или двухмерные анимированные объекты, расположенные в трехмерном пространстве.
-
Создание двухмерных треугольников из трехмерных геометрических фигур и визуализация этих треугольников с применением текстур. Для использования этого подхода сначала необходимо определить и упорядочить данные о трехмерных объектах, а затем преобразовать их в двухмерные треугольники для выполнения визуализации. На эти треугольники можно наложить текстуры растровых изображений, а затем с помощью метода
Graphics.drawTriangles()
эти треугольники отображаются в объекте Graphics. Этот подход используется, например, для загрузки данных трехмерной модели из файла и визуализации этой модели на экране или для рисования трехмерной поверхности в виде сетки с треугольными ячейками.