用于 Adobe® Flash® Platform 的 ActionScript® 3.0 参考
主页  |  隐藏包列表和类列表 |   |   |  新增内容  |  索引  |  附录  |  为什么显示为英语?
过滤条件: AIR 30.0 和更早版本, Flash Player 30.0 和更早版本, Flash Lite 4
Flex 4.6 和更早版本, Flash Pro CS6 和更早版本
隐藏过滤条件
flash.geom 

Matrix3D  - AS3

x

顶级
adobe.utils
air.desktop
air.net
air.update
air.update.events
coldfusion.air
coldfusion.air.errors
coldfusion.air.events
coldfusion.service
coldfusion.service.events
coldfusion.service.mxml
com.adobe.acm.solutions.authoring.domain.extensions
com.adobe.acm.solutions.ccr.domain.extensions
com.adobe.consulting.pst.vo
com.adobe.dct.component
com.adobe.dct.component.datadictionary
com.adobe.dct.component.datadictionaryElement
com.adobe.dct.component.dataElementsPanel
com.adobe.dct.component.toolbars
com.adobe.dct.event
com.adobe.dct.exp
com.adobe.dct.model
com.adobe.dct.service
com.adobe.dct.service.provider
com.adobe.dct.transfer
com.adobe.dct.util
com.adobe.dct.view
com.adobe.ep.taskmanagement.domain
com.adobe.ep.taskmanagement.event
com.adobe.ep.taskmanagement.filter
com.adobe.ep.taskmanagement.services
com.adobe.ep.taskmanagement.util
com.adobe.ep.ux.attachmentlist.component
com.adobe.ep.ux.attachmentlist.domain
com.adobe.ep.ux.attachmentlist.domain.events
com.adobe.ep.ux.attachmentlist.domain.renderers
com.adobe.ep.ux.attachmentlist.skin
com.adobe.ep.ux.attachmentlist.skin.renderers
com.adobe.ep.ux.content.event
com.adobe.ep.ux.content.factory
com.adobe.ep.ux.content.handlers
com.adobe.ep.ux.content.managers
com.adobe.ep.ux.content.model.asset
com.adobe.ep.ux.content.model.preview
com.adobe.ep.ux.content.model.relation
com.adobe.ep.ux.content.model.search
com.adobe.ep.ux.content.model.toolbar
com.adobe.ep.ux.content.search
com.adobe.ep.ux.content.services
com.adobe.ep.ux.content.services.load
com.adobe.ep.ux.content.services.permissions
com.adobe.ep.ux.content.services.preview
com.adobe.ep.ux.content.services.providers
com.adobe.ep.ux.content.services.query
com.adobe.ep.ux.content.services.relationships
com.adobe.ep.ux.content.services.search.lccontent
com.adobe.ep.ux.content.services.version
com.adobe.ep.ux.content.view
com.adobe.ep.ux.content.view.components.activate
com.adobe.ep.ux.content.view.components.grid
com.adobe.ep.ux.content.view.components.grid.hover
com.adobe.ep.ux.content.view.components.grid.hover.component
com.adobe.ep.ux.content.view.components.grid.renderers
com.adobe.ep.ux.content.view.components.relationships
com.adobe.ep.ux.content.view.components.review
com.adobe.ep.ux.content.view.components.search.renderers
com.adobe.ep.ux.content.view.components.searchpod
com.adobe.ep.ux.content.view.components.toolbar
com.adobe.ep.ux.content.view.components.toolbar.controlRenderers
com.adobe.ep.ux.content.view.components.version
com.adobe.ep.ux.documentsubmit.component
com.adobe.ep.ux.documentsubmit.domain
com.adobe.ep.ux.documentsubmit.skin
com.adobe.ep.ux.taskaction.component
com.adobe.ep.ux.taskaction.domain
com.adobe.ep.ux.taskaction.domain.events
com.adobe.ep.ux.taskaction.skin
com.adobe.ep.ux.taskdetails.component
com.adobe.ep.ux.taskdetails.domain
com.adobe.ep.ux.taskdetails.skin
com.adobe.ep.ux.tasklist.component
com.adobe.ep.ux.tasklist.domain
com.adobe.ep.ux.tasklist.skin
com.adobe.ep.ux.webdocumentviewer.domain
com.adobe.exm.expression
com.adobe.exm.expression.error
com.adobe.exm.expression.event
com.adobe.exm.expression.impl
com.adobe.fiber.runtime.lib
com.adobe.fiber.services
com.adobe.fiber.services.wrapper
com.adobe.fiber.styles
com.adobe.fiber.util
com.adobe.fiber.valueobjects
com.adobe.gravity.binding
com.adobe.gravity.context
com.adobe.gravity.flex.bundleloader
com.adobe.gravity.flex.progress
com.adobe.gravity.flex.serviceloader
com.adobe.gravity.framework
com.adobe.gravity.init
com.adobe.gravity.service.bundleloader
com.adobe.gravity.service.logging
com.adobe.gravity.service.manifest
com.adobe.gravity.service.progress
com.adobe.gravity.tracker
com.adobe.gravity.ui
com.adobe.gravity.utility
com.adobe.gravity.utility.async
com.adobe.gravity.utility.error
com.adobe.gravity.utility.events
com.adobe.gravity.utility.factory
com.adobe.gravity.utility.flex.async
com.adobe.gravity.utility.logging
com.adobe.gravity.utility.message
com.adobe.gravity.utility.sequence
com.adobe.gravity.utility.url
com.adobe.guides.control
com.adobe.guides.domain
com.adobe.guides.i18n
com.adobe.guides.spark.components.skins
com.adobe.guides.spark.components.skins.mx
com.adobe.guides.spark.headers.components
com.adobe.guides.spark.headers.skins
com.adobe.guides.spark.layouts.components
com.adobe.guides.spark.layouts.skins
com.adobe.guides.spark.navigators.components
com.adobe.guides.spark.navigators.renderers
com.adobe.guides.spark.navigators.skins
com.adobe.guides.spark.util
com.adobe.guides.spark.wrappers.components
com.adobe.guides.spark.wrappers.skins
com.adobe.guides.submit
com.adobe.icc.dc.domain
com.adobe.icc.dc.domain.factory
com.adobe.icc.editors.events
com.adobe.icc.editors.handlers
com.adobe.icc.editors.managers
com.adobe.icc.editors.model
com.adobe.icc.editors.model.config
com.adobe.icc.editors.model.el
com.adobe.icc.editors.model.el.operands
com.adobe.icc.editors.model.el.operators
com.adobe.icc.enum
com.adobe.icc.external.dc
com.adobe.icc.obj
com.adobe.icc.services
com.adobe.icc.services.category
com.adobe.icc.services.config
com.adobe.icc.services.download
com.adobe.icc.services.export
com.adobe.icc.services.external
com.adobe.icc.services.formbridge
com.adobe.icc.services.fragmentlayout
com.adobe.icc.services.layout
com.adobe.icc.services.letter
com.adobe.icc.services.locator
com.adobe.icc.services.module
com.adobe.icc.services.render
com.adobe.icc.services.submit
com.adobe.icc.services.user
com.adobe.icc.token
com.adobe.icc.vo
com.adobe.icc.vo.render
com.adobe.icomm.assetplacement.controller
com.adobe.icomm.assetplacement.controller.utils
com.adobe.icomm.assetplacement.data
com.adobe.icomm.assetplacement.model
com.adobe.livecycle.assetmanager.client
com.adobe.livecycle.assetmanager.client.event
com.adobe.livecycle.assetmanager.client.handler
com.adobe.livecycle.assetmanager.client.managers
com.adobe.livecycle.assetmanager.client.model
com.adobe.livecycle.assetmanager.client.model.cms
com.adobe.livecycle.assetmanager.client.service
com.adobe.livecycle.assetmanager.client.service.search
com.adobe.livecycle.assetmanager.client.service.search.cms
com.adobe.livecycle.assetmanager.client.utils
com.adobe.livecycle.content
com.adobe.livecycle.rca.model
com.adobe.livecycle.rca.model.constant
com.adobe.livecycle.rca.model.document
com.adobe.livecycle.rca.model.participant
com.adobe.livecycle.rca.model.reminder
com.adobe.livecycle.rca.model.stage
com.adobe.livecycle.rca.service
com.adobe.livecycle.rca.service.core
com.adobe.livecycle.rca.service.core.delegate
com.adobe.livecycle.rca.service.process
com.adobe.livecycle.rca.service.process.delegate
com.adobe.livecycle.rca.token
com.adobe.livecycle.ria.security.api
com.adobe.livecycle.ria.security.service
com.adobe.mosaic.layouts
com.adobe.mosaic.layouts.dragAndDrop
com.adobe.mosaic.layouts.interfaces
com.adobe.mosaic.mxml
com.adobe.mosaic.om.constants
com.adobe.mosaic.om.events
com.adobe.mosaic.om.impl
com.adobe.mosaic.om.interfaces
com.adobe.mosaic.skinning
com.adobe.mosaic.sparklib.editors
com.adobe.mosaic.sparklib.optionMenu
com.adobe.mosaic.sparklib.scrollableMenu
com.adobe.mosaic.sparklib.scrollableMenu.skins
com.adobe.mosaic.sparklib.tabLayout
com.adobe.mosaic.sparklib.tabLayout.events
com.adobe.mosaic.sparklib.tabLayout.layouts
com.adobe.mosaic.sparklib.tabLayout.skins
com.adobe.mosaic.sparklib.text
com.adobe.mosaic.sparklib.util
com.adobe.solutions.acm.authoring.presentation
com.adobe.solutions.acm.authoring.presentation.actionbar
com.adobe.solutions.acm.authoring.presentation.common
com.adobe.solutions.acm.authoring.presentation.events
com.adobe.solutions.acm.authoring.presentation.fragment
com.adobe.solutions.acm.authoring.presentation.letter
com.adobe.solutions.acm.authoring.presentation.letter.data
com.adobe.solutions.acm.authoring.presentation.preview
com.adobe.solutions.acm.authoring.presentation.rte
com.adobe.solutions.acm.ccr.presentation
com.adobe.solutions.acm.ccr.presentation.contentcapture
com.adobe.solutions.acm.ccr.presentation.contentcapture.events
com.adobe.solutions.acm.ccr.presentation.contentcapture.preview
com.adobe.solutions.acm.ccr.presentation.datacapture
com.adobe.solutions.acm.ccr.presentation.datacapture.renderers
com.adobe.solutions.acm.ccr.presentation.pdf
com.adobe.solutions.exm
com.adobe.solutions.exm.authoring
com.adobe.solutions.exm.authoring.components.controls
com.adobe.solutions.exm.authoring.components.toolbars
com.adobe.solutions.exm.authoring.domain
com.adobe.solutions.exm.authoring.domain.expression
com.adobe.solutions.exm.authoring.domain.impl
com.adobe.solutions.exm.authoring.domain.method
com.adobe.solutions.exm.authoring.domain.variable
com.adobe.solutions.exm.authoring.enum
com.adobe.solutions.exm.authoring.events
com.adobe.solutions.exm.authoring.model
com.adobe.solutions.exm.authoring.renderer
com.adobe.solutions.exm.authoring.view
com.adobe.solutions.exm.expression
com.adobe.solutions.exm.impl
com.adobe.solutions.exm.impl.method
com.adobe.solutions.exm.method
com.adobe.solutions.exm.mock
com.adobe.solutions.exm.mock.method
com.adobe.solutions.exm.runtime
com.adobe.solutions.exm.runtime.impl
com.adobe.solutions.exm.variable
com.adobe.solutions.prm.constant
com.adobe.solutions.prm.domain
com.adobe.solutions.prm.domain.factory
com.adobe.solutions.prm.domain.impl
com.adobe.solutions.prm.domain.manager
com.adobe.solutions.prm.presentation.asset
com.adobe.solutions.prm.presentation.constant
com.adobe.solutions.prm.presentation.document
com.adobe.solutions.prm.presentation.event
com.adobe.solutions.prm.presentation.file
com.adobe.solutions.prm.presentation.project
com.adobe.solutions.prm.presentation.team
com.adobe.solutions.prm.presentation.util
com.adobe.solutions.prm.service
com.adobe.solutions.prm.services.impl
com.adobe.solutions.prm.vo
com.adobe.solutions.rca.constant
com.adobe.solutions.rca.domain
com.adobe.solutions.rca.domain.common
com.adobe.solutions.rca.domain.factory
com.adobe.solutions.rca.domain.impl
com.adobe.solutions.rca.domain.impl.manager
com.adobe.solutions.rca.domain.manager
com.adobe.solutions.rca.presentation
com.adobe.solutions.rca.presentation.comment
com.adobe.solutions.rca.presentation.constant
com.adobe.solutions.rca.presentation.event
com.adobe.solutions.rca.presentation.gantt
com.adobe.solutions.rca.presentation.gantt.ruler
com.adobe.solutions.rca.presentation.template
com.adobe.solutions.rca.presentation.template.audit
com.adobe.solutions.rca.presentation.template.definition
com.adobe.solutions.rca.presentation.template.documents
com.adobe.solutions.rca.presentation.template.stages
com.adobe.solutions.rca.presentation.util
com.adobe.solutions.rca.service
com.adobe.solutions.rca.services.impl
com.adobe.solutions.rca.vo
com.adobe.solutions.rca.vo.um
com.adobe.viewsource
fl.accessibility
fl.containers
fl.controls
fl.controls.dataGridClasses
fl.controls.listClasses
fl.controls.progressBarClasses
fl.core
fl.data
fl.display
fl.events
fl.ik
fl.lang
fl.livepreview
fl.managers
fl.motion
fl.motion.easing
fl.rsl
fl.text
fl.transitions
fl.transitions.easing
fl.video
flash.accessibility
flash.concurrent
flash.crypto
flash.data
flash.desktop
flash.display
flash.display3D
flash.display3D.textures
flash.errors
flash.events
flash.external
flash.filesystem
flash.filters
flash.geom
flash.globalization
flash.html
flash.media
flash.net
flash.net.dns
flash.net.drm
flash.notifications
flash.permissions
flash.printing
flash.profiler
flash.sampler
flash.security
flash.sensors
flash.system
flash.text
flash.text.engine
flash.text.ime
flash.ui
flash.utils
flash.xml
flashx.textLayout
flashx.textLayout.compose
flashx.textLayout.container
flashx.textLayout.conversion
flashx.textLayout.edit
flashx.textLayout.elements
flashx.textLayout.events
flashx.textLayout.factory
flashx.textLayout.formats
flashx.textLayout.operations
flashx.textLayout.utils
flashx.undo
ga.controls
ga.layouts
ga.model
ga.uiComponents
ga.util
ga.views
ga.wrappers
lc.foundation
lc.foundation.domain
lc.foundation.events
lc.foundation.ui
lc.foundation.util
lc.preloader
lc.procmgmt
lc.procmgmt.commands
lc.procmgmt.domain
lc.procmgmt.events
lc.procmgmt.formbridge
lc.procmgmt.impl
lc.procmgmt.ui.attachments
lc.procmgmt.ui.controls
lc.procmgmt.ui.controls.card
lc.procmgmt.ui.controls.renderer
lc.procmgmt.ui.help
lc.procmgmt.ui.layout
lc.procmgmt.ui.presentationmodel
lc.procmgmt.ui.process
lc.procmgmt.ui.search
lc.procmgmt.ui.startpoint
lc.procmgmt.ui.task
lc.procmgmt.ui.task.form
lc.procmgmt.ui.task.form.commands
lc.procmgmt.ui.tracking
mx.accessibility
mx.automation
mx.automation.air
mx.automation.delegates
mx.automation.delegates.advancedDataGrid
mx.automation.delegates.charts
mx.automation.delegates.containers
mx.automation.delegates.controls
mx.automation.delegates.controls.dataGridClasses
mx.automation.delegates.controls.fileSystemClasses
mx.automation.delegates.core
mx.automation.delegates.flashflexkit
mx.automation.events
mx.binding
mx.binding.utils
mx.charts
mx.charts.chartClasses
mx.charts.effects
mx.charts.effects.effectClasses
mx.charts.events
mx.charts.renderers
mx.charts.series
mx.charts.series.items
mx.charts.series.renderData
mx.charts.styles
mx.collections
mx.collections.errors
mx.containers
mx.containers.accordionClasses
mx.containers.dividedBoxClasses
mx.containers.errors
mx.containers.utilityClasses
mx.controls
mx.controls.advancedDataGridClasses
mx.controls.dataGridClasses
mx.controls.listClasses
mx.controls.menuClasses
mx.controls.olapDataGridClasses
mx.controls.scrollClasses
mx.controls.sliderClasses
mx.controls.textClasses
mx.controls.treeClasses
mx.controls.videoClasses
mx.core
mx.core.windowClasses
mx.data
mx.data.crypto
mx.data.errors
mx.data.events
mx.data.messages
mx.data.mxml
mx.data.offline.errors
mx.data.utils
mx.effects
mx.effects.easing
mx.effects.effectClasses
mx.events
mx.filters
mx.flash
mx.formatters
mx.geom
mx.graphics
mx.graphics.codec
mx.graphics.shaderClasses
mx.logging
mx.logging.errors
mx.logging.targets
mx.managers
mx.messaging
mx.messaging.channels
mx.messaging.config
mx.messaging.errors
mx.messaging.events
mx.messaging.management
mx.messaging.messages
mx.modules
mx.netmon
mx.olap
mx.olap.aggregators
mx.preloaders
mx.printing
mx.resources
mx.rpc
mx.rpc.events
mx.rpc.http
mx.rpc.http.mxml
mx.rpc.livecycle
mx.rpc.mxml
mx.rpc.remoting
mx.rpc.remoting.mxml
mx.rpc.soap
mx.rpc.soap.mxml
mx.rpc.wsdl
mx.rpc.xml
mx.skins
mx.skins.halo
mx.skins.spark
mx.skins.wireframe
mx.skins.wireframe.windowChrome
mx.states
mx.styles
mx.utils
mx.validators
org.osmf.containers
org.osmf.display
org.osmf.elements
org.osmf.events
org.osmf.layout
org.osmf.logging
org.osmf.media
org.osmf.metadata
org.osmf.net
org.osmf.net.dvr
org.osmf.net.httpstreaming
org.osmf.net.metrics
org.osmf.net.qos
org.osmf.net.rtmpstreaming
org.osmf.net.rules
org.osmf.traits
org.osmf.utils
spark.accessibility
spark.automation.delegates
spark.automation.delegates.components
spark.automation.delegates.components.gridClasses
spark.automation.delegates.components.mediaClasses
spark.automation.delegates.components.supportClasses
spark.automation.delegates.skins.spark
spark.automation.events
spark.collections
spark.components
spark.components.calendarClasses
spark.components.gridClasses
spark.components.mediaClasses
spark.components.supportClasses
spark.components.windowClasses
spark.core
spark.effects
spark.effects.animation
spark.effects.easing
spark.effects.interpolation
spark.effects.supportClasses
spark.events
spark.filters
spark.formatters
spark.formatters.supportClasses
spark.globalization
spark.globalization.supportClasses
spark.layouts
spark.layouts.supportClasses
spark.managers
spark.modules
spark.preloaders
spark.primitives
spark.primitives.supportClasses
spark.skins
spark.skins.mobile
spark.skins.mobile.supportClasses
spark.skins.spark
spark.skins.spark.mediaClasses.fullScreen
spark.skins.spark.mediaClasses.normal
spark.skins.spark.windowChrome
spark.skins.wireframe
spark.skins.wireframe.mediaClasses
spark.skins.wireframe.mediaClasses.fullScreen
spark.transitions
spark.utils
spark.validators
spark.validators.supportClasses
xd.core.axm.enterprise.view.components
xd.core.axm.enterprise.view.skins
xd.core.axm.view.components
xd.core.axm.view.components.support

语言元素

全局常量
全局函数
运算符
语句、关键字和指令
特殊类型

附录

新增内容
编译器错误
编译器警告
运行时错误
迁移到 ActionScript 3
支持的字符集
仅适用于 MXML 的标签
Motion XML 元素
Timed Text 标记
不推荐使用的元素的列表
AccessibilityImplementation 常量
如何使用 ActionScript 示例
法律声明
flash.geom
public class Matrix3D
继承Matrix3D Inheritance Object

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

Matrix3D 类表示一个转换矩阵,该矩阵确定三维 (3D) 显示对象的位置和方向。该矩阵可以执行转换功能,包括平移(沿 x、y 和 z 轴重新定位)、旋转和缩放(调整大小)。Matrix3D 类还可以执行透视投影,这会将 3D 坐标空间中的点映射到二维 (2D) 视图。

单一矩阵可以将多个转换组合在一起,并一次性对 3D 显示对象应用这些转换。例如,可以将一个矩阵应用于 3D 坐标,以便依次执行旋转和平移。

当明确设置一个显示对象的 z 属性或任何旋转或缩放属性时,将自动创建相应的 Matrix3D 对象。

可以通过 transform.matrix3d 属性访问 3D 显示对象的 Matrix3D 对象。2D 对象不具有 Matrix3D 对象。

2D 对象的 z 属性的值为零,并且其 matrix3D 属性的值为 null

注意:如果将同一 Matrix3D 对象分配给两个不同的显示对象,则将引发运行时错误。

Matrix3D 类使用一个 4x4 正方形矩阵,即一个由四行和四列数字构成的表,其中容纳了用于转换的数据。矩阵的前三行容纳每个 3D 轴 (x,y,z) 的数据。平移信息位于最后一列中。方向和缩放数据位于前三个列中。缩放因子是位于前三个列中的对角数字。以下是 Matrix3D 元素的表示形式:

Matrix3D 元素

无需了解矩阵数学,即可使用 Matrix3D 类。该类提供了一些用于简化转换和投影任务的特定方法,例如 appendTranslation()appendRotation()interpolateTo() 方法。还可以使用 decompose()recompose() 方法或 rawData 属性来访问基础矩阵元素。

显示对象会对其轴旋转属性进行缓存,以便使每个轴具有单独的旋转并管理不同的旋转组合。若调用 Matrix3D 对象的某一方法来转换显示对象,则该对象的旋转缓存无效。

相关 API 元素



公共属性
 属性由以下参数定义
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  determinant : Number
[只读] 一个用于确定矩阵是否可逆的数字。
Matrix3D
  position : Vector3D
一个保存显示对象在转换参照帧中的 3D 坐标 (x,y,z) 位置的 Vector3D 对象。
Matrix3D
  rawData : Vector.<Number>
一个由 16 个数字组成的矢量,其中,每四个元素可以是 4x4 矩阵的一列。
Matrix3D
公共方法
 方法由以下参数定义
  
Matrix3D(v:Vector.<Number> = null)
创建 Matrix3D 对象。
Matrix3D
  
通过将另一个 Matrix3D 对象与当前 Matrix3D 对象相乘来后置一个矩阵。
Matrix3D
  
appendRotation(degrees:Number, axis:Vector3D, pivotPoint:Vector3D = null):void
在 Matrix3D 对象上后置一个增量旋转。
Matrix3D
  
appendScale(xScale:Number, yScale:Number, zScale:Number):void
在 Matrix3D 对象上后置一个增量缩放,沿 x、y 和 z 轴改变位置。
Matrix3D
  
在 Matrix3D 对象上后置一个增量平移,沿 x、y 和 z 轴重新定位。
Matrix3D
  
返回一个新 Matrix3D 对象,它是与当前 Matrix3D 对象完全相同的副本。
Matrix3D
  
copyColumnFrom(column:uint, vector3D:Vector3D):void
将 Vector3D 对象复制到调用方 Matrix3D 对象的特定列中。
Matrix3D
  
copyColumnTo(column:uint, vector3D:Vector3D):void
将调用方 Matrix3D 对象的特定列复制到 Vector3D 对象中。
Matrix3D
  
copyFrom(sourceMatrix3D:Matrix3D):void
将源 Matrix3D 对象中的所有矩阵数据复制到调用方 Matrix3D 对象中。
Matrix3D
  
copyRawDataFrom(vector:Vector.<Number>, index:uint = 0, transpose:Boolean = false):void
将源 Vector 对象中的所有矢量数据复制到调用方 Matrix3D 对象中。
Matrix3D
  
copyRawDataTo(vector:Vector.<Number>, index:uint = 0, transpose:Boolean = false):void
将调用方 Matrix3D 对象中的所有矩阵数据复制到提供的矢量中。
Matrix3D
  
copyRowFrom(row:uint, vector3D:Vector3D):void
将 Vector3D 对象复制到调用方 Matrix3D 对象的特定行中。
Matrix3D
  
copyRowTo(row:uint, vector3D:Vector3D):void
将调用方 Matrix3D 对象的特定行复制到 Vector3D 对象中。
Matrix3D
  
Matrix3D
  
decompose(orientationStyle:String = "eulerAngles"):Vector.<Vector3D>
将转换矩阵的平移、旋转和缩放设置作为由三个 Vector3D 对象组成的矢量返回。
Matrix3D
  
使用不含平移元素的转换矩阵将 Vector3D 对象从一个空间坐标转换到另一个空间坐标。
Matrix3D
 Inherited
表示对象是否已经定义了指定的属性。
Object
  
将当前矩阵转换为恒等或单位矩阵。
Matrix3D
  
interpolate(thisMat:Matrix3D, toMat:Matrix3D, percent:Number):Matrix3D
[静态] 朝着目标矩阵的平移、旋转和缩放转换插补某个矩阵的这些转换。
Matrix3D
  
朝着目标矩阵的平移、旋转和缩放转换插补此矩阵。
Matrix3D
  
反转当前矩阵。
Matrix3D
 Inherited
表示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
pointAt(pos:Vector3D, at:Vector3D = null, up:Vector3D = null):void
旋转显示对象以使其朝向指定的位置。
Matrix3D
  
通过将当前 Matrix3D 对象与另一个 Matrix3D 对象相乘来前置一个矩阵。
Matrix3D
  
prependRotation(degrees:Number, axis:Vector3D, pivotPoint:Vector3D = null):void
在 Matrix3D 对象上前置一个增量旋转。
Matrix3D
  
prependScale(xScale:Number, yScale:Number, zScale:Number):void
在 Matrix3D 对象上前置一个增量缩放,沿 x、y 和 z 轴改变位置。
Matrix3D
  
在 Matrix3D 对象上前置一个增量平移,沿 x、y 和 z 轴重新定位。
Matrix3D
 Inherited
表示指定的属性是否存在、是否可枚举。
Object
  
recompose(components:Vector.<Vector3D>, orientationStyle:String = "eulerAngles"):Boolean
设置转换矩阵的平移、旋转和缩放设置。
Matrix3D
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
  
使用转换矩阵将 Vector3D 对象从一个空间坐标转换到另一个空间坐标。
Matrix3D
  
使用转换矩阵将由数字构成的矢量从一个空间坐标转换到另一个空间坐标。
Matrix3D
  
将当前 Matrix3D 对象转换为一个矩阵,并将互换其中的行和列。
Matrix3D
 Inherited
返回指定对象的原始值。
Object
属性详细信息

determinant

属性
determinant:Number  [只读]

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

一个用于确定矩阵是否可逆的数字。

Matrix3D 对象必须是可逆的。可以使用 determinant 属性确保 Matrix3D 对象是可逆的。如果行列式为零,则矩阵没有逆矩阵。例如,如果矩阵的整个行或列为零,或如果两个行或列相等,则行列式为零。行列式还可用于对一系列方程进行求解。

仅正方形矩阵(例如 Matrix3D 类)具有行列式。



实现
    public function get determinant():Number

相关 API 元素

position

属性 
position:Vector3D

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

一个保存显示对象在转换参照帧中的 3D 坐标 (x,y,z) 位置的 Vector3D 对象。利用 position 属性,可立即访问显示对象矩阵的平移矢量,而无需分解和重新组合矩阵。

利用 position 属性,可以获取和设置转换矩阵的平移元素。



实现
    public function get position():Vector3D
    public function set position(value:Vector3D):void

相关 API 元素

rawData

属性 
rawData:Vector.<Number>

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

一个由 16 个数字组成的矢量,其中,每四个元素可以是 4x4 矩阵的一列。

如果 rawData 属性设置为一个不可逆的矩阵,则会引发异常。Matrix3D 对象必须是可逆的。如果需要不可逆的矩阵,请创建 Matrix3D 对象的子类。



实现
    public function get rawData():Vector.<Number>
    public function set rawData(value:Vector.<Number>):void

相关 API 元素

构造函数详细信息

Matrix3D

()构造函数
public function Matrix3D(v:Vector.<Number> = null)

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

创建 Matrix3D 对象。可以使用一个由 16 个数字组成的矢量来初始化 Matrix3D 对象,其中,每四个元素可以是一列。创建 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)

参数
v:Vector.<Number> (default = null) — 一个由 16 个数字组成的矢量,其中,每四个元素可以是 4x4 矩阵的一列。

相关 API 元素

方法详细信息

append

()方法
public function append(lhs:Matrix3D):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

通过将另一个 Matrix3D 对象与当前 Matrix3D 对象相乘来后置一个矩阵。得到的结果将合并两个矩阵转换。可以将一个 Matrix3D 对象与多个矩阵相乘。最终的 Matrix3D 对象将包含所有转换的结果。

矩阵乘法运算与矩阵加法运算不同。矩阵乘法运算是不可交换的。换句话说,A 乘以 B 并不等于 B 乘以 A。在使用 append() 方法时,乘法运算将从左侧开始,这意味着 lhs Matrix3D 对象位于乘法运算符的左侧。

thisMatrix = lhs * thisMatrix;

首次调用 append() 方法时,此方法会对父级空间进行相关修改。后续调用与后置的 Matrix3D 对象的参照帧相关。

append() 方法会将当前矩阵替换为后置的矩阵。如果要后置两个矩阵,而不更改当前矩阵,请使用 clone() 方法复制当前矩阵,然后对生成的副本应用 append() 方法。

参数

lhs:Matrix3D — 一个左侧矩阵,它与当前 Matrix3D 对象相乘。

相关 API 元素

appendRotation

()方法 
public function appendRotation(degrees:Number, axis:Vector3D, pivotPoint:Vector3D = null):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

在 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 3D 显示对象将围绕坐标 (10,10,0) 进行 y 轴旋转。

    
    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);
     
    

参数

degrees:Number — 旋转的角度。
 
axis:Vector3D — 旋转的轴或方向。常见的轴为 X_AXIS (Vector3D(1,0,0))、Y_AXIS (Vector3D(0,1,0)) 和 Z_AXIS (Vector3D(0,0,1))。此矢量的长度应为 1。
 
pivotPoint:Vector3D (default = null) — 用于确定对象的旋转中心的点。对象的默认轴点为该对象的注册点。

相关 API 元素

appendScale

()方法 
public function appendScale(xScale:Number, yScale:Number, zScale:Number):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

在 Matrix3D 对象上后置一个增量缩放,沿 x、y 和 z 轴改变位置。在将 Matrix3D 对象应用于显示对象时,矩阵会在 Matrix3D 对象中先执行其他转换,然后再执行缩放更改。默认的缩放系数为 (1.0, 1.0, 1.0)。

缩放将作为沿三个轴(x、y、z)进行的三个增量更改集进行定义。可以将每个轴与不同的数字相乘。在将缩放更改应用于显示对象时,该对象的大小会增大或减小。例如,将 x、y 和 z 轴设置为 2 将使对象大小为原来的两倍,而将轴设置为 0.5 将使对象的大小为原来的一半。要确保缩放转换只影响特定的轴,请将其他参数设置为 1。参数为 1 表示不沿特定的轴进行任何缩放更改。

appendScale() 方法可用于调整大小和管理扭曲(例如显示对象的拉伸或收缩),或用于某个位置上的放大和缩小。在显示对象的旋转和平移过程中,将自动执行缩放转换。

转换的顺序很重要。先调整大小再平移的转换所产生的效果与先平移再调整大小的转换所产生的效果不同。

参数

xScale:Number — 用于沿 x 轴缩放对象的乘数。
 
yScale:Number — 用于沿 y 轴缩放对象的乘数。
 
zScale:Number — 用于沿 z 轴缩放对象的乘数。

相关 API 元素

appendTranslation

()方法 
public function appendTranslation(x:Number, y:Number, z:Number):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

在 Matrix3D 对象上后置一个增量平移,沿 x、y 和 z 轴重新定位。在将 Matrix3D 对象应用于显示对象时,矩阵会在 Matrix3D 对象中先执行其他转换,然后再执行平移更改。

平移将作为沿三个轴(x、y、z)进行的三个增量更改集进行定义。在对显示对象应用转换时,显示对象会从当前位置沿 x、y 和 z 轴按参数指定的增量移动。要确保平移只影响特定的轴,请将其他参数设置为零。参数为零表示不沿特定的轴进行任何更改。

平移更改不是绝对更改。它们与矩阵的当前位置和方向相关。要确保对转换矩阵进行绝对更改,请使用 recompose() 方法。转换的顺序也很重要。先平移再旋转的转换所产生的效果与先旋转再平移所产生的效果不同。

参数

x:Number — 沿 x 轴的增量平移。
 
y:Number — 沿 y 轴的增量平移。
 
z:Number — 沿 z 轴的增量平移。

相关 API 元素

clone

()方法 
public function clone():Matrix3D

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

返回一个新 Matrix3D 对象,它是与当前 Matrix3D 对象完全相同的副本。

返回
Matrix3D — 一个新 Matrix3D 对象,它是与当前 Matrix3D 对象完全相同的副本。

copyColumnFrom

()方法 
public function copyColumnFrom(column:uint, vector3D:Vector3D):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 11, AIR 3.0, Flash Lite 4

将 Vector3D 对象复制到调用方 Matrix3D 对象的特定列中。

参数

column:uint — 副本的目标列。
 
vector3D:Vector3D — 要从中复制数据的 Vector3D 对象。

copyColumnTo

()方法 
public function copyColumnTo(column:uint, vector3D:Vector3D):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 11, AIR 3.0, Flash Lite 4

将调用方 Matrix3D 对象的特定列复制到 Vector3D 对象中。

参数

column:uint — 要从中复制数据的列。
 
vector3D:Vector3D — 副本的目标 Vector3D 对象。

copyFrom

()方法 
public function copyFrom(sourceMatrix3D:Matrix3D):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 11, AIR 3.0, Flash Lite 4

将源 Matrix3D 对象中的所有矩阵数据复制到调用方 Matrix3D 对象中。

参数

sourceMatrix3D:Matrix3D — 要从中复制数据的 Matrix3D 对象。

copyRawDataFrom

()方法 
public function copyRawDataFrom(vector:Vector.<Number>, index:uint = 0, transpose:Boolean = false):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 11, AIR 3.0, Flash Lite 4

将源 Vector 对象中的所有矢量数据复制到调用方 Matrix3D 对象中。利用可选索引参数,您可以选择矢量中的任何起始文字插槽。

参数

vector:Vector.<Number> — 要从中复制数据的 Vector 对象。
 
index:uint (default = 0)
 
transpose:Boolean (default = false)

copyRawDataTo

()方法 
public function copyRawDataTo(vector:Vector.<Number>, index:uint = 0, transpose:Boolean = false):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 11, AIR 3.0, Flash Lite 4

将调用方 Matrix3D 对象中的所有矩阵数据复制到提供的矢量中。利用可选索引参数,您可以选择矢量中的任何目标起始文字插槽。

参数

vector:Vector.<Number> — 要将数据复制到的 Vector 对象。
 
index:uint (default = 0)
 
transpose:Boolean (default = false)

copyRowFrom

()方法 
public function copyRowFrom(row:uint, vector3D:Vector3D):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 11, AIR 3.0, Flash Lite 4

将 Vector3D 对象复制到调用方 Matrix3D 对象的特定行中。

参数

row:uint — 要将数据复制到的行。
 
vector3D:Vector3D — 要从中复制数据的 Vector3D 对象。

copyRowTo

()方法 
public function copyRowTo(row:uint, vector3D:Vector3D):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 11, AIR 3.0, Flash Lite 4

将调用方 Matrix3D 对象的特定行复制到 Vector3D 对象中。

参数

row:uint — 要从中复制数据的行。
 
vector3D:Vector3D — 将作为数据复制目的地的 Vector3D 对象。

copyToMatrix3D

()方法 
public function copyToMatrix3D(dest:Matrix3D):void

参数

dest:Matrix3D

decompose

()方法 
public function decompose(orientationStyle:String = "eulerAngles"):Vector.<Vector3D>

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

将转换矩阵的平移、旋转和缩放设置作为由三个 Vector3D 对象组成的矢量返回。第一个 Vector3D 对象容纳平移元素。第二个 Vector3D 对象容纳旋转元素。第三个 Vector3D 对象容纳缩放元素。

一些 Matrix3D 方法(例如 interpolateTo() 方法)会自动分解和重新组成矩阵以执行其转换。

要使用绝对父级参照帧来修改矩阵转换,请使用 decompose() 方法检索设置,然后做出适当的更改。然后,可以使用 recompose() 方法将 Matrix3D 对象设置为修改后的转换。

decompose() 方法的参数指定要用于转换的方向样式。默认方向为 eulerAngles,它通过三个不同的对应于每个轴的旋转角来定义方向。这些旋转是连续发生的,并且相互不更改轴。显示对象的轴旋转属性执行欧拉角方向样式转换。另外两个方向样式选项分别为 axisAnglequaternion。轴角方向结合使用轴和角度来确定方向。对象绕其旋转的轴是一个单位矢量,它表示一个方向。角表示有关矢量的旋转幅度。方向还确定显示对象面对的方向,而角确定哪个方向是向上。appendRotation()prependRotation() 方法使用轴角方向。四元数方向使用复数和矢量的第四个元素。方向由三个旋转轴(x、y、z)和一个旋转角 (w) 表示。interpolate() 方法使用四元数。

参数

orientationStyle:String (default = "eulerAngles") — 一个可选参数,它确定用于矩阵转换的方向样式。三种类型的方向样式分别为:eulerAngles(常量 EULER_ANGLES)、axisAngle(常量 AXIS_ANGLE)和 quaternion(常量 QUATERNION)。有关其他方向样式的附加信息,请参阅 geom.Orientation3D 类。

返回
Vector.<Vector3D> — 一个由三个 Vector3D 对象组成的矢量,其中,每个对象分别容纳平移、旋转和缩放设置。

相关 API 元素


示例  ( 如何使用本示例 )

在本示例中,通过使用 decompose()recompose() 方法,在椭圆朝消失点移动时水平拉伸椭圆。decompose() 方法返回的第一个 Vector3D 对象容纳平移坐标。第三个 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);
        }
    }
}

deltaTransformVector

()方法 
public function deltaTransformVector(v:Vector3D):Vector3D

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

使用不含平移元素的转换矩阵将 Vector3D 对象从一个空间坐标转换到另一个空间坐标。返回的 Vector3D 对象将容纳应用旋转和缩放转换之后的新坐标。如果 deltaTransformVector() 方法应用的是仅包含平移转换的矩阵,则返回的 Vector3D 对象与原始 Vector3D 对象相同。

通过使用 deltaTransformVector() 方法,可以让一个坐标空间中的显示对象对第二个显示对象的旋转转换做出响应。该对象不复制旋转;它只是更改其位置以反映旋转中的更改。例如,为了使用 display.Graphics API 绘制一个旋转的 3D 显示对象,则必须将该对象的旋转坐标映射到一个 2D 点。首先,在每次旋转后使用 deltaTransformVector() 方法检索对象的 3D 坐标。然后,应用显示对象的 local3DToGlobal() 方法,以将 3D 坐标平移到 2D 点。然后,可以使用 2D 点来绘制旋转的 3D 对象。

注意:此方法会将所传递的 Vector3D 的 w 分量自动设置为 0.0。

参数

v:Vector3D — 一个容纳要转换的坐标的 Vector3D 对象。

返回
Vector3D — 一个包含转换后的坐标的 Vector3D 对象。

相关 API 元素

identity

()方法 
public function identity():void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

将当前矩阵转换为恒等或单位矩阵。恒等矩阵中的主对角线位置上的元素的值为一,而所有其他元素的值为零。生成的结果是一个矩阵,其中,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)。以下是恒等矩阵的表示形式。

恒等矩阵

通过应用恒等矩阵转换的对象不执行任何转换。换句话说,如果一个矩阵与一个恒等矩阵相乘,则会生成一个与原始矩阵相同(恒等)的矩阵。

interpolate

()方法 
public static function interpolate(thisMat:Matrix3D, toMat:Matrix3D, percent:Number):Matrix3D

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

朝着目标矩阵的平移、旋转和缩放转换插补某个矩阵的这些转换。

interpolate() 方法可避免在使用方法(例如显示对象的轴旋转属性)时出现一些不需要的结果。interpolate() 方法可使缓存的显示对象旋转属性值无效,并在插补前将显示对象矩阵的方向元素转换为四元数。此方法可以确保旋转的路径最短且最有效。它还生成平滑的、无万向节锁定的旋转。当使用欧拉角时(此时将单独处理每个轴)会出现万向节锁定。在绕两个或更多轴旋转的过程中,这些轴可能会对齐,从而导致意外结果。四元数旋转可避免万向节锁定。

interpolate() 方法的连续调用会产生这样的效果:显示对象迅速启动,然后缓慢接近另一个显示对象。例如,如果将 thisMat 参数设置为返回的 Matrix3D 对象,将 toMat 参数设置为目标显示对象关联的 Matrix3D 对象,并将 percent 参数设置为 0.1,则显示对象会朝目标对象移动百分之十。对于后续调用或在后续的帧中,对象会移动剩余的 90% 的百分之十,然后移动剩余的 距离的百分之十,直到对象到达目标。

参数

thisMat:Matrix3D — 要插补的 Matrix3D 对象。
 
toMat:Matrix3D — 目标 Matrix3D 对象。
 
percent:Number — 一个介于 01 之间的值,它确定朝目标 Matrix3D 对象插补 thisMat Matrix3D 对象的位置百分比。

返回
Matrix3D — 一个 Matrix3D 对象,其中包含用于放置原始矩阵和目标矩阵之间的矩阵值的元素。在将返回的矩阵应用于 this 显示对象时,该对象会朝着目标对象移动到指定的百分比位置。

相关 API 元素

interpolateTo

()方法 
public function interpolateTo(toMat:Matrix3D, percent:Number):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

朝着目标矩阵的平移、旋转和缩放转换插补此矩阵。

interpolateTo() 方法可避免在使用方法(例如显示对象的轴旋转属性)时出现不需要的结果。interpolateTo() 方法可使缓存的显示对象旋转属性值无效,并在插补前将显示对象矩阵的方向元素转换为四元数。此方法可以确保旋转的路径最短且最有效。它还生成平滑的、无万向节锁定的旋转。当使用欧拉角时(此时将单独处理每个轴)会出现万向节锁定。在绕两个或更多轴旋转的过程中,这些轴可能会对齐,从而导致意外结果。四元数旋转可避免万向节锁定。

注意:在插值的情况下,矩阵的缩放值将重置,此时将标准化矩阵。

interpolateTo() 方法的连续调用会产生这样的效果:显示对象迅速启动,然后缓慢接近另一个显示对象。例如,如果 percent 参数设置为 0.1,则显示对象会朝 toMat 参数指定的目标对象移动百分之十。对于后续调用或在后续的帧中,对象会移动剩余的 90% 的百分之十,然后移动剩余的 距离的百分之十,直到对象到达目标。

参数

toMat:Matrix3D — 目标 Matrix3D 对象。
 
percent:Number — 一个介于 01 之间的值,它确定显示对象相对于目标的位置。该值越接近于 1.0,显示对象就越靠近其当前位置。该值越接近于 0,显示对象就越靠近其目标。

相关 API 元素


示例  ( 如何使用本示例 )

在本示例中,一个三维显示对象 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);
        }
    }
}

invert

()方法 
public function invert():Boolean

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

反转当前矩阵。逆矩阵具有与原始矩阵相同的大小,但它执行的转换与原始矩阵相反。例如,如果在原始矩阵中,一个对象按某个方向绕 x 轴旋转,那么在逆矩阵中,该对象将按此方向的反方向绕 x 轴旋转。对一个对象应用逆矩阵可撤消原始矩阵执行的转换。如果将一个矩阵与其逆矩阵相乘,则将产生一个恒等矩阵。

利用矩阵的逆矩阵,可以将一个矩阵除以另一个矩阵。通过将矩阵 A 与矩阵 B 的逆矩阵相乘,可以将矩阵 A 除以矩阵 B。逆矩阵还可以用于摄像头空间。当摄像头在现实世界空间中移动时,现实世界中的对象需按与摄像头相反的方向移动,这样才能从现实世界视点转换到摄像头或视点空间。例如,如果摄像头移动得越近,则对象变得越大。换句话说,如果摄像头沿现实世界的 z 轴下移,则对象会沿此 z 轴上移。

invert() 方法会将当前矩阵替换为逆矩阵。如果要反转矩阵,而不更改当前矩阵,请先使用 clone() 方法复制当前矩阵,然后对生成的副本应用 invert() 方法。

Matrix3D 对象必须是可逆的。

返回
Boolean — 如果成功反转矩阵,则返回 true

相关 API 元素

pointAt

()方法 
public function pointAt(pos:Vector3D, at:Vector3D = null, up:Vector3D = null):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

旋转显示对象以使其朝向指定的位置。此方法允许对方向进行就地修改。显示对象(即 at Vector3D 对象)的向前方向矢量指向指定的现实世界相关位置。显示对象的向上方向是用 up Vector3D 对象指定的。

pointAt() 方法可使缓存的显示对象旋转属性值无效。此方法可分解显示对象的矩阵并修改旋转元素,从而让对象转向指定位置。然后,此方法将重新组成(更新)显示对象的矩阵,这将执行转换。如果该对象指向正在移动的目标(例如正在移动的对象位置),则对于每个后续调用,此方法都会让对象朝正在移动的目标旋转。

注意:如果使用 Matrix3D.pointAt() 方法,但不设置可选参数,则默认情况下,某个目标对象将不面对所指定的相对于现实世界的位置。您需要将 at 的值设置为 -y 轴 (0,-1,0),将 up 的值设置为 -z 轴 (0,0,-1)。

参数

pos:Vector3D — 目标对象的相对于现实世界的位置。相对于现实世界定义了相对于所有对象所在的现实世界空间和坐标的对象转换。
 
at:Vector3D (default = null) — 用于定义显示对象所指向的位置的相对于对象的矢量。相对于对象定义了相对于对象空间(即对象自己的参照帧和坐标系统)的对象转换。默认值为 +y 轴 (0,1,0)。
 
up:Vector3D (default = null) — 用于为显示对象定义“向上”方向的相对于对象的矢量。如果从上至下绘制对象,则 +z 轴为该对象的“up”矢量。相对于对象定义了相对于对象空间(即对象自己的参照帧和坐标系统)的对象转换。默认值为 +z 轴 (0,0,1)。

相关 API 元素


示例  ( 如何使用本示例 )

本示例中,一个三角形指向并沿循椭圆的运动路径移动。椭圆和三角形设置为不同的位置。然后,椭圆朝舞台角部上移。三角形沿循椭圆的平移更改。可以更改三角形的形状和 pointAt() 的“at”和“up”参数,以查看它们对三角形移动的影响。
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);
        }
    }
}

prepend

()方法 
public function prepend(rhs:Matrix3D):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

通过将当前 Matrix3D 对象与另一个 Matrix3D 对象相乘来前置一个矩阵。得到的结果将合并两个矩阵转换。

矩阵乘法运算与矩阵加法运算不同。矩阵乘法运算是不可交换的。换句话说,A 乘以 B 并不等于 B 乘以 A。在使用 prepend() 方法时,乘法运算将从右侧开始,这意味着 rhs Matrix3D 对象位于乘法运算符的右侧。

thisMatrix = thisMatrix * rhs

prepend() 方法所做的修改与对象空间相关。换句话说,这些修改始终与对象的初始参照帧相关。

prepend() 方法会将当前矩阵替换为前置的矩阵。如果要前置两个矩阵,而不更改当前矩阵,请先使用 clone() 方法复制当前矩阵,然后对生成的副本应用 prepend() 方法。

参数

rhs:Matrix3D — 一个右侧矩阵,它与当前 Matrix3D 对象相乘。

相关 API 元素

prependRotation

()方法 
public function prependRotation(degrees:Number, axis:Vector3D, pivotPoint:Vector3D = null):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

在 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 3D 显示对象将围绕坐标 (10,10,0) 进行 y 轴旋转。

    
    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);
     
    

参数

degrees:Number — 旋转的角度。
 
axis:Vector3D — 旋转的轴或方向。常见的轴为 X_AXIS (Vector3D(1,0,0))、Y_AXIS (Vector3D(0,1,0)) 和 Z_AXIS (Vector3D(0,0,1))。此矢量的长度应为 1。
 
pivotPoint:Vector3D (default = null) — 一个用于确定旋转中心的点。对象的默认轴点为该对象的注册点。

相关 API 元素


示例  ( 如何使用本示例 )

在本示例中,用户可以通过移动鼠标将椭圆绕其 x 轴和 y 轴旋转。该椭圆是通过将其注册点设置为椭圆的中心而绘制的。椭圆使用鼠标的 x 坐标绕其 y 轴旋转;并使用鼠标的 y 坐标绕其 x 轴旋转。
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);
        }
        
    }
}

prependScale

()方法 
public function prependScale(xScale:Number, yScale:Number, zScale:Number):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

在 Matrix3D 对象上前置一个增量缩放,沿 x、y 和 z 轴改变位置。在将 Matrix3D 对象应用于显示对象时,矩阵会在 Matrix3D 对象中先执行缩放更改,然后再执行其他转换。这些更改与对象有关,它与原始位置和方向的参照帧相对。默认的缩放系数为 (1.0, 1.0, 1.0)。

缩放将作为沿三个轴(x、y、z)进行的三个增量更改集进行定义。可以将每个轴与不同的数字相乘。在将缩放更改应用于显示对象时,该对象的大小会增大或减小。例如,将 x、y 和 z 轴设置为 2 将使对象大小为原来的两倍,而将轴设置为 0.5 将使对象的大小为原来的一半。要确保缩放转换只影响特定的轴,请将其他参数设置为 1。参数为 1 表示不沿特定的轴进行任何缩放更改。

prependScale() 方法可用于调整大小和管理扭曲(例如显示对象的拉伸或收缩),还可用于某个位置上的放大和缩小。在显示对象的旋转和平移过程中,将自动执行缩放转换。

转换的顺序很重要。先调整大小再平移的转换所产生的效果与先平移再调整大小的转换所产生的效果不同。

参数

xScale:Number — 用于沿 x 轴缩放对象的乘数。
 
yScale:Number — 用于沿 y 轴缩放对象的乘数。
 
zScale:Number — 用于沿 z 轴缩放对象的乘数。

相关 API 元素

prependTranslation

()方法 
public function prependTranslation(x:Number, y:Number, z:Number):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

在 Matrix3D 对象上前置一个增量平移,沿 x、y 和 z 轴重新定位。在将 Matrix3D 对象应用于显示对象时,矩阵会在 Matrix3D 对象中先执行平移更改,然后再执行其他转换。

平移指定显示对象从其当前位置沿 x、y 和 z 轴移动的距离。prependTranslation() 方法将平移设置为沿三个轴(x、y、z)进行的三个增量更改集。要让平移只影响特定的轴,请将其他参数设置为零。参数为零表示不沿特定的轴进行任何更改。

平移更改不是绝对更改。此效果与对象有关,它与原始位置和方向的参照帧相对。要确保对转换矩阵进行绝对更改,请使用 recompose() 方法。转换的顺序也很重要。先平移再旋转的转换所产生的效果与先旋转再平移的转换所产生的效果不同。当使用 prependTranslation() 时,显示对象将继续按照其面对的方向移动,这与其他转换无关。例如,如果显示对象面向的是正向 x 轴,则该对象将继续按照 prependTranslation() 方法指定的方向移动,这与对象旋转的方式无关。要让平移更改在其他转换之后发生,请使用 appendTranslation() 方法。

参数

x:Number — 沿 x 轴的增量平移。
 
y:Number — 沿 y 轴的增量平移。
 
z:Number — 沿 z 轴的增量平移。

相关 API 元素


示例  ( 如何使用本示例 )

在本示例中,用户可以使用鼠标将椭圆沿舞台的 y 轴向上推。当用户将鼠标移动到椭圆上方时,椭圆将沿 y 轴向上跳过十个坐标。当鼠标远离椭圆时,如果椭圆尚未到达顶部,则它会再次沿 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);
            }   
        }
    }
}

recompose

()方法 
public function recompose(components:Vector.<Vector3D>, orientationStyle:String = "eulerAngles"):Boolean

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

设置转换矩阵的平移、旋转和缩放设置。与显示对象的旋转属性或 Matrix3D 对象的旋转方法所做的增量更改不同,recompose() 方法所做的更改是绝对更改。recompose() 方法将覆盖矩阵转换。

要使用绝对父级参照帧来修改矩阵转换,请使用 decompose() 方法检索设置,然后做出适当的更改。然后,可以使用 recompose() 方法将 Matrix3D 对象设置为修改后的转换。

recompose() 方法的参数指定用于转换的方向样式。默认方向为 eulerAngles,它通过三个不同的对应于每个轴的旋转角来定义方向。这些旋转是连续发生的,并且相互不更改轴。显示对象的轴旋转属性执行欧拉角方向样式转换。另外两个方向样式选项分别为 axisAnglequaternion。轴角方向结合使用轴和角度来确定方向。对象绕其旋转的轴是一个单位矢量,它表示一个方向。角表示有关矢量的旋转幅度。方向还确定显示对象面对的方向,而角确定哪个方向是向上。appendRotation()prependRotation() 方法使用轴角方向。四元数方向使用复数和矢量的第四个元素。方向由三个旋转轴(x、y、z)和一个旋转角 (w) 表示。interpolate() 方法使用四元数。

参数

components:Vector.<Vector3D> — 一个由三个 Vector3D 对象组成的矢量,这些对象将替代 Matrix3D 对象的平移、旋转和缩放元素。
 
orientationStyle:String (default = "eulerAngles") — 一个可选参数,它确定用于矩阵转换的方向样式。三种类型的方向样式分别为:eulerAngles(常量 EULER_ANGLES)、axisAngle(常量 AXIS_ANGLE)和 quaternion(常量 QUATERNION)。有关其他方向样式的附加信息,请参阅 geom.Orientation3D 类。

返回
Booleancomponents 矢量的任何 Vector3D 元素不存在或为 null 时返回 false

相关 API 元素

transformVector

()方法 
public function transformVector(v:Vector3D):Vector3D

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

使用转换矩阵将 Vector3D 对象从一个空间坐标转换到另一个空间坐标。返回的 Vector3D 对象将容纳转换后的新坐标。将对 Vector3D 对象中应用所有矩阵转换(包括平移)。

如果已将 transformVector() 方法的结果应用于显示对象的位置,则仅显示对象的位置会发生更改。显示对象的旋转和缩放元素保持不变。

注意:此方法会将所传递的 Vector3D 的 w 分量自动设置为 1.0。

参数

v:Vector3D — 一个容纳要转换的坐标的 Vector3D 对象。

返回
Vector3D — 一个包含转换后的坐标的 Vector3D 对象。

相关 API 元素

transformVectors

()方法 
public function transformVectors(vin:Vector.<Number>, vout:Vector.<Number>):void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

使用转换矩阵将由数字构成的矢量从一个空间坐标转换到另一个空间坐标。tranformVectors() 方法将读取 vin Vector 对象中的每三个数字作为一个 3D 坐标 (x,y,z),并将转换后的 3D 坐标放置到 vout Vector 对象中。所有矩阵转换(包括平移)将应用于 vin Vector 对象。可以使用 transformVectors() 方法将 3D 对象作为网格进行呈现和转换。网格是一个顶点集合,这些顶点定义了对象的形状。

参数

vin:Vector.<Number> — 一个由多个数字组成的矢量,其中每三个数字构成一个要转换的 3D 坐标 (x,y,z)。
 
vout:Vector.<Number> — 一个由多个数字组成的矢量,其中每三个数字构成一个已转换的 3D 坐标 (x,y,z)。

相关 API 元素

transpose

()方法 
public function transpose():void

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

将当前 Matrix3D 对象转换为一个矩阵,并将互换其中的行和列。例如,如果当前 Matrix3D 对象的 rawData 包含以下 16 个数字: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() 方法。

正交矩阵是一个正方形矩阵,该矩阵的转置矩阵和逆矩阵相同。





[ X ]为什么显示为英语?
《ActionScript 3.0 参考》中的内容以英语显示

《ActionScript 3.0 参考》中的部分内容未翻译成所有语言。当某个语言元素未翻译时,将显示为英语。例如,ga.controls.HelpBox 类未翻译成任何语言。因此在简体中文版的参考中,ga.controls.HelpBox 类显示为英语。