flash.display
public class DisplayObject
继承DisplayObject Inheritance EventDispatcher Inheritance Object
实现 IBitmapDrawable
子类 AVM1Movie, Bitmap, InteractiveObject, MorphShape, Shape, StaticText, Video

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

DisplayObject 类是可放在显示列表中的所有对象的基类。该显示列表管理在 Flash Player 或 Adobe AIR 中显示的所有对象。使用 DisplayObjectContainer 类排列显示列表中的显示对象。DisplayObjectContainer 对象可以有子显示对象,然而其它显示对象(如 Shape 和 TextField 对象)是“叶”节点,只有父级和同级,没有子级。

DisplayObject 类支持基本功能(如对象的 xy 位置),也支持更高级的对象属性(如它的转换矩阵)。

DisplayObject 是一种抽象基类;因此,不能直接调用 DisplayObject。调用 new DisplayObject() 会引发 ArgumentError 异常。

所有显示对象都继承自 DisplayObject 类。

DisplayObject 类本身不包含任何用于在屏幕上呈现内容的 API。因此,如果要创建 DisplayObject 类的自定义子类,您将需要扩展其中一个具有在屏幕上呈现内容的 API 的子类,如 Shape、Sprite、Bitmap、SimpleButton、TextField 或 MovieClip 类。

DisplayObject 类包含若干广播事件。通常,任何特定事件的目标均为一个特定的 DisplayObject 实例。例如,added 事件的目标是已添加到显示列表的特定 DisplayObject 实例。若只有一个目标,则会将事件侦听器限制为只能放置到该目标上(在某些情况下,可放置到显示列表中该目标的始祖上)。但是,对于广播事件,目标不是特定的 DisplayObject 实例,而是所有 DisplayObject 实例(包括那些不在显示列表中的实例)。这意味着您可以向任何 DisplayObject 实例添加侦听器来侦听广播事件。除了 DisplayObject 类的 Events 表中列出的广播事件,DisplayObject 类还从 EventDispatcher 类继承如下两个广播事件:activatedeactivate

一些以前在 ActionScript 1.0 和 2.0 MovieClip、TextField 和 Button 类中使用的属性(如 _alpha_height_name_width_x_y 等)在 ActionScript 3.0 DisplayObject 类中有等效属性,但它们已被重命名,因此不再以下划线 (_) 字符开头。

有关详细信息,请参阅《ActionScript 3.0 编程》中的“显示编程”一章。

查看示例

另请参见

flash.display.DisplayObjectContainer
Core display classes
Properties and methods of the DisplayObject class
Example: Applying a matrix transformation to a display object


公共属性
 属性定义方
  accessibilityProperties : AccessibilityProperties
此显示对象的当前辅助功能选项。
DisplayObject
  alpha : Number
指示指定对象的 Alpha 透明度值。
DisplayObject
  blendMode : String
BlendMode 类中的一个值,用于指定要使用的混合模式。
DisplayObject
  blendShader : Shader
[只写] 设置用于混合前景和背景的着色器。
DisplayObject
  cacheAsBitmap : Boolean
如果设置为 true,则 Flash Player 或 Adobe AIR 将缓存显示对象的内部位图表示形式。
DisplayObject
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  filters : Array
包含当前与显示对象关联的每个滤镜对象的索引数组。
DisplayObject
  height : Number
指示显示对象的高度,以像素为单位。
DisplayObject
  loaderInfo : LoaderInfo
[只读 (read-only)] 返回一个 LoaderInfo 对象,其中包含加载此显示对象所属的文件的相关信息。
DisplayObject
  mask : DisplayObject
调用显示对象被指定的 mask 对象遮罩。
DisplayObject
  mouseX : Number
[只读 (read-only)] 指示鼠标位置的 x 坐标,以像素为单位。
DisplayObject
  mouseY : Number
[只读 (read-only)] 指示鼠标位置的 y 坐标,以像素为单位。
DisplayObject
  name : String
指示 DisplayObject 的实例名称。
DisplayObject
  opaqueBackground : Object
指定显示对象是否由于具有某种背景颜色而不透明。
DisplayObject
  parent : DisplayObjectContainer
[只读 (read-only)] 指示包含此显示对象的 DisplayObjectContainer 对象。
DisplayObject
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  root : DisplayObject
[只读 (read-only)] 对于加载的 SWF 文件中的显示对象,root 属性是此 SWF 文件所表示的显示列表树结构部分中的顶级显示对象。
DisplayObject
  rotation : Number
指示 DisplayObject 实例距其原始方向的旋转程度,以度为单位。
DisplayObject
  rotationX : Number
指示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 x 轴旋转(以度为单位)。
DisplayObject
  rotationY : Number
指示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 y 轴旋转(以度为单位)。
DisplayObject
  rotationZ : Number
指示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 z 轴旋转(以度为单位)。
DisplayObject
  scale9Grid : Rectangle
当前有效的缩放网格。
DisplayObject
  scaleX : Number
指示从注册点开始应用的对象的水平缩放比例(百分比)。
DisplayObject
  scaleY : Number
指示从对象注册点开始应用的对象的垂直缩放比例(百分比)。
DisplayObject
  scaleZ : Number
指示从对象的注册点开始应用的对象的深度缩放比例(百分比)。
DisplayObject
  scrollRect : Rectangle
显示对象的滚动矩形范围。
DisplayObject
  stage : Stage
[只读 (read-only)] 显示对象的舞台。
DisplayObject
  transform : Transform
一个对象,具有与显示对象的矩阵、颜色转换和像素范围有关的属性。
DisplayObject
  visible : Boolean
显示对象是否可见。
DisplayObject
  width : Number
指示显示对象的宽度,以像素为单位。
DisplayObject
  x : Number
指示 DisplayObject 实例相对于父级 DisplayObjectContainer 本地坐标的 x 坐标。
DisplayObject
  y : Number
指示 DisplayObject 实例相对于父级 DisplayObjectContainer 本地坐标的 y 坐标。
DisplayObject
  z : Number
指示 DisplayObject 实例相对于 3D 父容器沿 z 轴的 z 坐标位置。
DisplayObject
公共方法
 方法定义方
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
 Inherited
将事件调度到事件流中。
EventDispatcher
  
getBounds(targetCoordinateSpace:DisplayObject):Rectangle
返回一个矩形,该矩形定义相对于 targetCoordinateSpace 对象坐标系的显示对象区域。
DisplayObject
  
getRect(targetCoordinateSpace:DisplayObject):Rectangle
返回一个矩形,该矩形根据 targetCoordinateSpace 参数定义的坐标系定义显示对象的边界,但不包括形状上的任何笔触。
DisplayObject
  
将 point 对象从舞台(全局)坐标转换为显示对象的(本地)坐标。
DisplayObject
  
将二维点从舞台(全局)坐标转换为三维显示对象的(本地)坐标。
DisplayObject
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
  
计算显示对象,以确定它是否与 obj 显示对象重叠或相交。
DisplayObject
  
hitTestPoint(x:Number, y:Number, shapeFlag:Boolean = false):Boolean
计算显示对象,以确定它是否与 x 和 y 参数指定的点重叠或相交。
DisplayObject
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
将三维显示对象的(本地)坐标的三维点转换为舞台(全局)坐标中的二维点。
DisplayObject
  
将 point 对象从显示对象的(本地)坐标转换为舞台(全局)坐标。
DisplayObject
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
  将显示对象添加到显示列表中时调度。DisplayObject
  在将显示对象直接添加到舞台显示列表或将包含显示对象的子树添加至舞台显示列表中时调度。DisplayObject
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
  [播放事件] 播放头进入新帧时调度。DisplayObject
  [广播事件] 播放头退出当前帧时调度。DisplayObject
  [广播事件] 在帧显示对象的构造函数运行之后但在帧脚本运行之前调度。DisplayObject
  将要从显示列表中删除显示对象时调度。DisplayObject
  在从显示列表中直接删除显示对象或删除包含显示对象的子树时调度。DisplayObject
  [广播事件] 将要更新和呈现显示列表时调度。DisplayObject
属性详细信息
accessibilityProperties属性
accessibilityProperties:AccessibilityProperties  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

此显示对象的当前辅助功能选项。如果您修改 accessibilityProperties 属性或 accessibilityProperties 内部的任何字段,则必须调用 Accessibility.updateProperties() 方法以使您的更改生效。



实现
    public function get accessibilityProperties():AccessibilityProperties
    public function set accessibilityProperties(value:AccessibilityProperties):void

另请参见


示例
下例演示如何将简单的 AccessibilityProperties 对象附加到 TextField 实例:
import flash.text.TextField;
import flash.accessibility.AccessibilityProperties;
import flash.accessibility.Accessibility;
import flash.system.Capabilities;

var tf:TextField = new TextField();
tf.text = "hello";

var accessProps:AccessibilityProperties = new AccessibilityProperties();
accessProps.name = "Greeting";

tf.accessibilityProperties = accessProps;

if (Capabilities.hasAccessibility) {
    Accessibility.updateProperties();
}

trace(tf.accessibilityProperties.name); // Greeting
alpha属性 
alpha:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指示指定对象的 Alpha 透明度值。有效值为 0(完全透明)到 1(完全不透明)。默认值为 1。alpha 设置为 0 的显示对象活动的,即使它们不可见。



实现
    public function get alpha():Number
    public function set alpha(value:Number):void

示例
当鼠标滑过 Sprite 时,以下代码将 Sprite 的 alpha 属性设置为 50%:
import flash.display.Sprite;
import flash.events.MouseEvent;

var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xFF0000);
circle.graphics.drawCircle(40, 40, 40);
addChild(circle);

circle.addEventListener(MouseEvent.MOUSE_OVER, dimObject);
circle.addEventListener(MouseEvent.MOUSE_OUT, restoreObject);

function dimObject(event:MouseEvent):void {
    event.target.alpha = 0.5;
}

function restoreObject(event:MouseEvent):void {
    event.target.alpha = 1.0;
}
blendMode属性 
blendMode:String  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

BlendMode 类中的一个值,用于指定要使用的混合模式。内部绘制位图的方法有两种。如果启用了混合模式或外部剪辑遮罩,则将通过向矢量渲染器添加有位图填充的正方形来绘制位图。如果尝试将此属性设置为无效值,则 Flash Player 或 Adobe AIR 会将该值设置为 BlendMode.NORMAL

blendMode 属性影响显示对象的每个像素。每个像素都由三种原色(红色、绿色和蓝色)组成,每种原色的值介于 0x00 和 0xFF 之间。Flash Player 或 Adobe AIR 将影片剪辑中一个像素的每种原色与背景中像素的对应颜色进行比较。例如,如果 blendMode 设置为 BlendMode.LIGHTEN,则 Flash Player 或 Adobe AIR 会将显示对象的红色值与背景的红色值进行比较,然后使用两者中较亮的一种颜色作为显示颜色的红色成分的值。

下表将对 blendMode 设置进行说明。BlendMode 类定义可使用的字符串值。表中的插图显示应用于交叠于显示对象 (1) 之上的圆形显示对象 (2) 的 blendMode 值。

编号为 1 的正方形编号为 2 的圆

BlendMode 常量插图Description
BlendMode.NORMAL 混合模式 NORMAL 该显示对象出现在背景前面。显示对象的像素值将覆盖背景的像素值。在显示对象为透明的区域,背景是可见的。
BlendMode.LAYER 混合模式 LAYER 强制为该显示对象创建一个透明度组。这意味着首先在临时缓冲区中预构建显示对象,然后再进行下一步处理。如果显示对象是使用位图缓存进行预缓存的,或显示对象是至少带有一个子对象(具有 BlendMode.NORMAL 以外的 blendMode 设置)的显示对象容器,则这将自动完成。
BlendMode.MULTIPLY 混合模式 MULTIPLY 将显示对象原色的值与背景颜色的值相乘,然后通过除以 0xFF 进行标准化,从而得到较暗的颜色。此设置通常用于阴影和深度效果。

例如,如果显示对象中一个像素的某个原色(例如红色)与背景中对应的像素颜色的值均为 0x88,则相乘结果为 0x4840。除以 0xFF 将得到该原色的值 0x48,这是比显示对象或背景颜色暗的阴影。

BlendMode.SCREEN 混合模式 SCREEN 将显示对象颜色的补色(反色)与背景颜色的补色相乘,会产生漂白效果。此设置通常用于产生加亮效果或用来删除显示对象的黑色区域。
BlendMode.LIGHTEN 混合模式 LIGHTEN 在显示对象原色和背景颜色中选择相对较亮的颜色(具有较大值的颜色)。此设置通常用于叠加类型。

例如,如果显示对象的某个像素的 RGB 值为 0xFFCC33,背景像素的 RGB 值为 0xDDF800,则显示像素的结果 RGB 值为 0xFFF833(因为 0xFF > 0xDD,0xCC < 0xF8,且 0x33 > 0x00 = 33)。

BlendMode.DARKEN 混合模式 DARKEN 在显示对象原色和背景颜色中选择相对较暗的颜色(具有较小值的颜色)。此设置通常用于叠加类型。

例如,如果显示对象的某个像素的 RGB 值为 0xFFCC33,背景像素的 RGB 值为 0xDDF800,则显示像素的结果 RGB 值为 0xDDCC00(因为 0xFF > 0xDD,0xCC < 0xF8,且 0x33 > 0x00 = 33)。

BlendMode.DIFFERENCE 混合模式 DIFFERENCE 将显示对象的原色与背景颜色进行比较,然后从较亮的原色值中减去较暗的原色值。此设置通常用于得到更明亮的颜色。

例如,如果显示对象的某个像素的 RGB 值为 0xFFCC33,背景像素的 RGB 值为 0xDDF800,则显示像素的结果 RGB 值为 0x222C33(因为 0xFF - 0xDD = 0x22,0xF8 - 0xCC = 0x2C,且 0x33 - 0x00 = 0x33)。

BlendMode.ADD 混合模式 ADD 将显示对象的原色值添加到它的背景颜色中,上限值为 0xFF。此设置通常用于使两个对象间的加亮溶解产生动画效果。

例如,如果显示对象的某个像素的 RGB 值为 0xAAA633,背景像素的 RGB 值为 0xDD2200,则显示像素的结果 RGB 值为 0xFFC833(因为 0xAA + 0xDD > 0xFF,0xA6 + 0x22 = 0xC8,且 0x33 + 0x00 = 0x33)。

BlendMode.SUBTRACT 混合模式 SUBTRACT 从背景颜色的值中减去显示对象原色的值,下限值为 0。此设置通常用于使两个对象间的变暗溶解产生动画效果。

例如,如果显示对象的某个像素的 RGB 值为 0xAA2233,背景像素的 RGB 值为 0xDDA600,则显示像素的结果 RGB 值为 0x338400(因为 0xDD - 0xAA = 0x33,0xA6 - 0x22 = 0x84 且 0x00 - 0x33 < 0x00)。

BlendMode.INVERT 混合模式 INVERT 反转背景。
BlendMode.ALPHA 混合模式 ALPHA 将显示对象的每个像素的 Alpha 值应用于背景。这要求将父显示对象的 blendMode 设置设置为 BlendMode.LAYER。例如,在此插图中,父显示对象是一个白色背景,它具有 blendMode = BlendMode.LAYER
BlendMode.ERASE 混合模式 ERASE 根据显示对象的 Alpha 值擦除背景。这要求将父显示对象的 blendMode 设置为 BlendMode.LAYER。例如,在此插图中,父显示对象是一个白色背景,它具有 blendMode = BlendMode.LAYER
BlendMode.OVERLAY 混合模式 OVERLAY 根据背景的暗度调整每个像素的颜色。如果背景灰度值高于 50%,则显示对象和背景颜色进行叠加,从而产生较亮的颜色。如果背景灰度值低于 50%,则颜色相乘,从而产生较暗的颜色。此设置通常用于获得阴影效果。
BlendMode.HARDLIGHT 混合模式 HARDLIGHT 根据显示对象的暗度调整每个像素的颜色。如果显示对象灰度值高于 50%,则显示对象和背景颜色进行叠加,从而产生较亮的颜色。如果显示对象灰度值低于 50%,则颜色相乘,从而产生较暗的颜色。此设置通常用于获得阴影效果。
BlendMode.SHADER 不可用 使用自定义着色器例程调整颜色。将使用的着色器指定为赋予 blendShader 属性的 Shader 实例。如果将显示对象的 blendShader 属性设置为 Shader 实例,则会将显示对象的 blendMode 属性自动设置为 BlendMode.SHADER。如果在未首先设置 blendShader 属性的情况下将 blendMode 属性设置为 BlendMode.SHADER,则 blendMode 属性会设置为 BlendMode.NORMAL



实现
    public function get blendMode():String
    public function set blendMode(value:String):void

另请参见


示例
以下代码创建两个 Sprite 对象,一个正方形和一个圆形,并在鼠标指针滑过圆形时将圆形(在前景中)的混合模式设置为 BlendMode.SUBTRACT
import flash.display.Sprite;
import flash.display.BlendMode;
import flash.events.MouseEvent;

var square:Sprite = new Sprite();
square.graphics.beginFill(0xFF88CC);
square.graphics.drawRect(0, 0, 80, 80);
addChild(square);

var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xAA0022);
circle.graphics.drawCircle(40, 40, 40);
addChild(circle);

circle.addEventListener(MouseEvent.MOUSE_OVER, dimObject);
circle.addEventListener(MouseEvent.MOUSE_OUT, restoreObject);

function dimObject(event:MouseEvent):void {
    event.target.blendMode = BlendMode.SUBTRACT;
}

function restoreObject(event:MouseEvent):void {
    event.target.blendMode = BlendMode.NORMAL;
}
blendShader属性 
blendShader:Shader  [只写]

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

设置用于混合前景和背景的着色器。当 blendMode 属性设置为 BlendMode.SHADER 时,将使用指定的着色器为显示对象创建混合模式输出。

如果将显示对象的 blendShader 属性设置为 Shader 实例,则会将显示对象的 blendMode 属性自动设置为 BlendMode.SHADER。如果设置了 blendShader 属性(这会将 blendMode 属性设置为 BlendMode.SHADER),则 blendMode 属性的值会发生变化,只需将 blendMode 属性设置为 BlendMode.SHADER 即可将混合模式重置为使用混合着色器。除非要更改用于混合模式的着色器,否则无需再次设置 blendShader 属性。

赋予 blendShader 属性的 Shader 至少必须指定两个 image4 输入。无需使用关联 ShaderInput 对象的 input 属性在代码中指定输入。会自动使用背景显示对象作为第一个输入(index 为 0 的输入)。使用前景显示对象作为第二个输入(index 为 1 的输入)。用作混合着色器的着色器可以指定超过两个输入。在这种情况下,必须通过设置其 ShaderInput 实例的 input 属性来指定任何附加输入。

将 Shader 实例赋予此属性时,会在内部复制着色器。混合操作将使用该内部副本,而不是对原始着色器的引用。对着色器进行的任何更改(比如更改参数值、输入或字节代码)不会应用于所复制的用于混合模式的着色器。



实现
    public function set blendShader(value:Shader):void

引发
ArgumentError — 当着色器输出类型与此操作不兼容时(着色器必须指定 pixel4 输出)。
 
ArgumentError — 当着色器指定的图像输入少于两个,或者前两个输入不是 image4 输入时。
 
ArgumentError — 当着色器指定了未提供的图像输入时。
 
ArgumentError — 当使用 ByteArray 或 Vector.<Number> 实例作为输入,并且没有为 ShaderInput 指定 widthheight 属性或指定的值与输入对象中的数据量不匹配时。有关详细信息,请参阅 ShaderInput.input 属性。

另请参见

cacheAsBitmap属性 
cacheAsBitmap:Boolean  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

如果设置为 true,则 Flash Player 或 Adobe AIR 将缓存显示对象的内部位图表示形式。此缓存可以提高包含复杂矢量内容的显示对象的性能。

具有已缓存位图的显示对象的所有矢量数据都将被绘制到位图而不是主显示。然后,将位图作为贴紧到最接近像素边界的未拉伸、未旋转的像素复制到主显示。像素按一对一与父对象进行映射。如果位图的边界发生更改,则将重新创建位图而不会拉伸它。

除非将 cacheAsBitmap 属性设置为 true,否则不会创建内部位图。

cacheAsBitmap 属性设置为 true 后,呈现并不更改,但是,显示对象将自动执行像素贴紧。动画速度可能会大大加快,具体取决于矢量内容的复杂性。

只要对显示对象(当其 filter 数组不为空时)应用滤镜,cacheAsBitmap 属性就自动设置为 true,而且如果对显示对象应用了滤镜,即使将该属性设置为 false,也会将该显示对象的 cacheAsBitmap 报告为 true。如果清除显示对象的所有滤镜,则 cacheAsBitmap 设置将更改为它上次的设置。

在下面的情况下,即使将 cacheAsBitmap 属性设置为 true,显示对象也不使用位图,而是从矢量数据呈现:

最好将 cacheAsBitmap 属性与主要具有静态内容且不频繁缩放和旋转的影片剪辑一起使用。对于这样的影片剪辑,在转换影片剪辑时(更改其 xy 位置时),cacheAsBitmap 可以提高性能。



实现
    public function get cacheAsBitmap():Boolean
    public function set cacheAsBitmap(value:Boolean):void

另请参见


示例
下例将投影应用于 Shape 实例。然后,它将跟踪 cacheAsBitmap 属性的值,该值在应用滤镜时设置为 true
import flash.display.Sprite;
import flash.filters.DropShadowFilter

var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xAA0022);
circle.graphics.drawCircle(40, 40, 40);

addChild(circle);

trace(circle.cacheAsBitmap); // false

var filter:DropShadowFilter = new DropShadowFilter();
circle.filters = [filter];

trace(circle.cacheAsBitmap); // true
filters属性 
filters:Array  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

包含当前与显示对象关联的每个滤镜对象的索引数组。 flash.filters 包中的多个类定义了可使用的特定滤镜。

在设计时可以在 Flash 创作工具中应用滤镜,而在运行时则可以使用 ActionScript 代码应用滤镜。若要通过使用 ActionScript 应用滤镜,您必须制作整个 filters 数组的临时副本,修改临时数组,然后将临时数组的值分配回 filters 数组。 无法直接将新滤镜对象添加到 filters 数组。

要通过使用 ActionScript 添加滤镜,请执行以下步骤(假定目标显示对象名为 myDisplayObject):

  1. 使用所选滤镜类的构造函数方法创建一个新的滤镜对象。
  2. myDisplayObject.filters 数组的值分配给临时数组,例如一个名为 myFilters 的数组。
  3. 将新的滤镜对象添加到临时数组 myFilters
  4. 将临时数组的值分配给 myDisplayObject.filters 数组。

如果 filters 数组未定义,则无需使用临时数组。相反,您可以直接赋值包含一个或多个已创建的滤镜对象的一个数组文本值。“示例”部分的第一个示例通过使用处理已定义和未定义的 filters 数组的代码来添加投影滤镜。

要修改现有的滤镜对象,必须使用修改 filters 数组的副本的技术:

  1. filters 数组的值分配给临时数组,例如一个名为 myFilters 的数组。
  2. 使用临时数组 myFilters 修改属性。例如,如果要设置数组中第一个滤镜的品质属性,可以使用以下代码:myFilters[0].quality = 1;
  3. 将临时数组的值分配给 filters 数组。

在加载时,如果显示对象具有关联的滤镜,则将它标记为像透明位图那样缓存自身。从此时起,只要显示对象具有有效的滤镜列表,播放器就会将显示对象缓存为位图。此源位图用作滤镜效果的源图像。每个显示对象通常有两个位图:一个包含原始未过滤的源显示对象,另一个是过滤后的最终图像。呈现时使用最终图像。只要显示对象不发生更改,最终图像就不需要更新。

flash.filters 包含有滤镜类。例如,要创建 DropShadow 滤镜,请输入:

import flash.filters.DropShadowFilter
     var myFilter:DropShadowFilter = new DropShadowFilter (distance, angle, color, alpha, blurX, blurY, quality, inner, knockout)

您可以使用 is 运算符确定分配给 filter 数组中每个索引位置的滤镜的类型。例如,以下代码显示如何确定是 DropShadowFilter 的 filters 数组中第一个滤镜的位置:

import flash.text.TextField;
     import flash.filters.*;
     var tf:TextField = new TextField();
     var filter1:DropShadowFilter = new DropShadowFilter();
     var filter2:GradientGlowFilter = new GradientGlowFilter();
     tf.filters = [filter1, filter2];
     
     tf.text = "DropShadow index: " + filterPosition(tf, DropShadowFilter).toString(); // 0
     addChild(tf)
     
     function filterPosition(displayObject:DisplayObject, filterClass:Class):int {
         for (var i:uint = 0; i < displayObject.filters.length; i++) {
             if (displayObject.filters[i] is filterClass) {
                 return i;
             }
         }
         return -1;
     }

注意:由于无法直接将新滤镜对象添加到 DisplayObject.filters 数组,因此以下代码对名为 myDisplayObject 的目标显示对象不起作用:

myDisplayObject.filters.push(myDropShadow);



实现
    public function get filters():Array
    public function set filters(value:Array):void

引发
ArgumentError — 当 filters 包括 ShaderFilter,并且着色器输出类型与此操作不兼容时(着色器必须指定 pixel4 输出)。
 
ArgumentError — 当 filters 包括 ShaderFilter,并且着色器未指定任何图像输入或第一个输入不是 image4 输入时。
 
ArgumentError — 当 filters 包括 ShaderFilter,并且着色器指定了未提供的图像输入时。
 
ArgumentError — 当 filters 包括 ShaderFilter,使用了 ByteArray 或 Vector.<Number> 实例作为着色器输入,并且没有为 ShaderInput 指定 widthheight 属性或指定的值与输入数据中的数据量不匹配时。有关详细信息,请参阅 ShaderInput.input 属性。

另请参见

height属性 
height:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指示显示对象的高度,以像素为单位。高度是根据显示对象内容的范围来计算的。如果您设置了 height 属性,则 scaleY 属性会相应调整,如以下代码所示:

var rect:Shape = new Shape();
    rect.graphics.beginFill(0xFF0000);
    rect.graphics.drawRect(0, 0, 100, 100);
    trace(rect.scaleY) // 1;
    rect.height = 200;
    trace(rect.scaleY) // 2;

除 TextField 和 Video 对象以外,没有内容的显示对象(如一个空的 Sprite)的高度为 0,即使您尝试将 height 设置为其它值,也是这样。



实现
    public function get height():Number
    public function set height(value:Number):void

示例
以下代码创建两个 TextField 对象并调整每个对象的 height 属性(基于每个对象的 textHeight 属性);此外,它还通过设置其 y 属性来定位第二个文本字段:
import flash.text.TextField;

var tf1:TextField = new TextField();
tf1.text = "Text Field 1";
tf1.border = true;
tf1.wordWrap = true;
tf1.width = 40;
tf1.height = tf1.textHeight + 5;
addChild(tf1);

var tf2:TextField = new TextField();
tf2.text = "Text Field 2";
tf2.border = true;
tf2.wordWrap = true;
tf2.width = 40;
tf2.height = tf2.textHeight + 5;
tf2.y = tf1.y + tf1.height + 5;
addChild(tf2);
loaderInfo属性 
loaderInfo:LoaderInfo  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

返回一个 LoaderInfo 对象,其中包含加载此显示对象所属的文件的相关信息。loaderInfo 属性仅为 SWF 文件的根显示对象或已加载的位图(而不是使用 ActionScript 绘制的位图)定义。要查找与包含名为 myDisplayObject 的显示对象的 SWF 文件相关的 loaderInfo 对象,请使用 myDisplayObject.root.loaderInfo

大的 SWF 文件可以通过调用 this.root.loaderInfo.addEventListener(Event.COMPLETE, func) 来监控其下载。



实现
    public function get loaderInfo():LoaderInfo

另请参见


示例
以下代码假定 this 引用显示对象。代码会输出该显示对象的根 SWF 文件的 URL:
trace (this.loaderInfo.url);
mask属性 
mask:DisplayObject  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

调用显示对象被指定的 mask 对象遮罩。要确保当舞台缩放时蒙版仍然有效,mask 显示对象必须处于显示列表的活动部分。但不绘制 mask 对象本身。将 mask 设置为 null 可删除蒙版。

要能够缩放遮罩对象,它必须在显示列表中。要能够拖动蒙版 Sprite 对象(通过调用其 startDrag() 方法),它必须在显示列表中。要为基于 sprite 正在调度的 mouseDown 事件调用 startDrag() 方法,请将 sprite 的 buttonMode 属性设置为 true

注意:单个 mask 对象不能用于遮罩多个执行调用的显示对象。在将 mask 分配给第二个显示对象时,会撤消其作为第一个对象的遮罩,该对象的 mask 属性将变为 null



实现
    public function get mask():DisplayObject
    public function set mask(value:DisplayObject):void

示例
以下代码创建 TextField 对象以及被设置为 TextField 对象的遮罩的 Sprite 对象。当用户单击文本字段时,drag() 事件侦听器函数会调用遮罩 Sprite 对象的 startDrag() 方法:
import flash.text.TextField;
import flash.display.Sprite;
import flash.events.MouseEvent;

var tf:TextField = new TextField();
tf.text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, " 
            + "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. "
tf.selectable = false;
tf.wordWrap = true;
tf.width = 150;
addChild(tf);

var square:Sprite = new Sprite();
square.graphics.beginFill(0xFF0000);
square.graphics.drawRect(0, 0, 40, 40);
addChild(square);

tf.mask = square;

tf.addEventListener(MouseEvent.MOUSE_DOWN, drag);
tf.addEventListener(MouseEvent.MOUSE_UP, noDrag);

function drag(event:MouseEvent):void {
    square.startDrag();
}
function noDrag(event:MouseEvent):void {
    square.stopDrag();
}
mouseX属性 
mouseX:Number  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指示鼠标位置的 x 坐标,以像素为单位。

注意:对于已旋转的 DisplayObject,返回的 x 坐标将反映未旋转的对象。



实现
    public function get mouseX():Number

示例
以下代码创建一个 Sprite 对象,并在用户单击该对象时跟踪 mouseXmouseY 的位置:
import flash.display.Sprite;
import flash.events.MouseEvent;

var square:Sprite = new Sprite();
square.graphics.beginFill(0xFF0000);
square.graphics.drawRect(0, 0, 200, 200);
addChild(square);

square.addEventListener(MouseEvent.CLICK, traceCoordinates);

function traceCoordinates(event:MouseEvent):void {
    trace(square.mouseX, square.mouseY);
}
mouseY属性 
mouseY:Number  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指示鼠标位置的 y 坐标,以像素为单位。

注意:对于已旋转的 DisplayObject,返回的 y 坐标将反映未旋转的对象。



实现
    public function get mouseY():Number

示例
以下代码创建一个 Sprite 对象,并在用户单击该对象时跟踪 mouseXmouseY 的位置:
import flash.display.Sprite;
import flash.events.MouseEvent;

var square:Sprite = new Sprite();
square.graphics.beginFill(0xFF0000);
square.graphics.drawRect(0, 0, 200, 200);
addChild(square);

square.addEventListener(MouseEvent.CLICK, traceCoordinates);

function traceCoordinates(event:MouseEvent):void {
    trace(square.mouseX, square.mouseY);
}
name属性 
name:String  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指示 DisplayObject 的实例名称。通过调用父显示对象容器的 getChildByName() 方法,可以在父显示对象容器的子列表中标识该对象。



实现
    public function get name():String
    public function set name(value:String):void

引发
IllegalOperationError — 如果尝试在 Flash 创作工具中对放置在时间轴上的对象设置此属性。

示例
以下代码创建两个 Sprite 对象,并跟踪相关的 name 属性(当用户单击其中一个对象时):
import flash.display.Sprite;
import flash.events.MouseEvent;

var circle1:Sprite = new Sprite();
circle1.graphics.beginFill(0xFF0000);
circle1.graphics.drawCircle(40, 40, 40);
circle1.name = "circle1";
addChild(circle1);
circle1.addEventListener(MouseEvent.CLICK, traceName);

var circle2:Sprite = new Sprite();
circle2.graphics.beginFill(0x0000FF);
circle2.graphics.drawCircle(140, 40, 40);
circle2.name = "circle2";
addChild(circle2);
circle2.addEventListener(MouseEvent.CLICK, traceName);

function traceName(event:MouseEvent):void {
    trace(event.target.name);
}
opaqueBackground属性 
opaqueBackground:Object  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指定显示对象是否由于具有某种背景颜色而不透明。透明的位图包含 Alpha 通道数据,并以透明的方式进行绘制。不透明位图没有 Alpha 通道(呈现速度比透明位图快)。如果位图是不透明的,则您可以指定要使用的其自己的背景颜色。

如果设置为某个数值,则表面是不透明的,并且带有该数值指定的 RGB 背景颜色。如果设置为 null(默认值),则显示对象将有透明背景。

opaqueBackground 属性主要与 cacheAsBitmap 属性一起使用,以优化呈现。对于 cacheAsBitmap 属性设置为 true 的显示对象,设置 opaqueBackground 可以提高呈现性能。

如果在 shapeFlag 参数设置为 true 时调用 hitTestPoint() 方法,则不透明的背景区域 匹配。

不透明背景区域不响应鼠标事件。



实现
    public function get opaqueBackground():Object
    public function set opaqueBackground(value:Object):void

另请参见


示例
以下代码创建一个具有蓝色圆形的 Shape 对象,并将其 opaqueBackground 属性设置为红色 (0xFF0000):
import flash.display.Shape;

var circle:Shape = new Shape();
circle.graphics.beginFill(0x0000FF);
circle.graphics.drawCircle(40, 40, 40);
circle.opaqueBackground = 0xFF0000;
addChild(circle);
parent属性 
parent:DisplayObjectContainer  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指示包含此显示对象的 DisplayObjectContainer 对象。使用 parent 属性可以指定高于显示列表层次结构中当前显示对象的显示对象的相对路径。

可以使用 parent 在显示列表中上移多个级别,如下所示:

this.parent.parent.alpha = 20;



实现
    public function get parent():DisplayObjectContainer

引发
SecurityError — 父显示对象属于您无权访问的安全沙箱。通过让父影片调用 Security.allowDomain() 方法,可以避免发生这种情况。

示例
以下代码创建三个 Sprite 对象,并显示 parent 属性如何反映显示列表层次结构:
import flash.display.Sprite;

var sprite1:Sprite = new Sprite();
sprite1.name = "sprite1";
var sprite2:Sprite = new Sprite();
sprite2.name = "sprite2";
var sprite3:Sprite = new Sprite();
sprite3.name = "sprite3";

sprite1.addChild(sprite2);
sprite2.addChild(sprite3);

trace(sprite2.parent.name); // sprite1
trace(sprite3.parent.name); // sprite2
trace(sprite3.parent.parent.name); // sprite1
root属性 
root:DisplayObject  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

对于加载的 SWF 文件中的显示对象,root 属性是此 SWF 文件所表示的显示列表树结构部分中的顶级显示对象。对于代表已加载图像文件的位图对象,root 属性就是位图对象本身。对于第一个加载的 SWF 文件的主类的实例,root 属性就是显示对象本身。Stage 对象的 root 属性是 Stage 对象本身。对于任何未添加到显示列表的显示对象,root 属性设置为 null,除非它已添加到符合以下条件的显示对象容器:不在显示列表中,但属于已加载 SWF 文件中顶级显示对象的子级。

例如,如果您通过调用 Sprite() 构造函数方法创建新的 Sprite 对象,则其 root 属性将为 null,除非您将其添加到显示列表中(或添加到不在显示列表中但属于 SWF 文件中顶级显示对象的子级的显示对象容器中)。

对于加载的 SWF 文件,即使用于加载文件的 Loader 对象未在显示列表中,SWF 文件中的顶级显示对象也会为其本身设置 root 属性。在 Loader 对象添加为对其设置 root 属性的显示对象的子级前,它不会设置自己的 root 属性。



实现
    public function get root():DisplayObject

示例
以下代码显示 Stage 对象、未加载的(添加到显示列表前后)显示对象(Loader 对象)和已加载对象(已加载 Bitmap 对象)的 root 属性之间的差异:
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;

trace(stage.root); // [object Stage]

var ldr:Loader = new Loader();
trace (ldr.root); // null

addChild(ldr); 
trace (ldr.root); // [object ...]

var urlReq:URLRequest = new URLRequest("example.jpg");
ldr.load(urlReq);

ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);

function loaded(event:Event):void {
    trace(ldr.content.root); // [object Bitmap]
}
rotation属性 
rotation:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指示 DisplayObject 实例距其原始方向的旋转程度,以度为单位。从 0 到 180 的值表示顺时针方向旋转;从 0 到 -180 的值表示逆时针方向旋转。对于此范围之外的值,可以通过加上或减去 360 获得该范围内的值。例如,my_video.rotation = 450语句与 my_video.rotation = 90 是相同的。



实现
    public function get rotation():Number
    public function set rotation(value:Number):void

示例
以下代码可创建一个 Sprite 对象并在用户单击该对象时旋转它:
import flash.display.Sprite;
import flash.events.MouseEvent;

var square:Sprite = new Sprite();
square.graphics.beginFill(0xFFCC00);
square.graphics.drawRect(-50, -50, 100, 100);
square.x = 150;
square.y = 150;
addChild(square);

square.addEventListener(MouseEvent.CLICK, rotate);

function rotate(event:MouseEvent):void {
        square.rotation += 15;
}
rotationX属性 
rotationX:Number  [读写]

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

指示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 x 轴旋转(以度为单位)。从 0 到 180 的值表示顺时针方向旋转;从 0 到 -180 的值表示逆时针方向旋转。对于此范围之外的值,可以通过加上或减去 360 获得该范围内的值。



实现
    public function get rotationX():Number
    public function set rotationX(value:Number):void

示例
在本示例中,两个椭圆使用其 rotationXrotationY 属性进行旋转。第一个椭圆的注册点设置为椭圆的中心点。它围绕自身进行旋转。第二个椭圆围绕一个外部点进行旋转。
package {
    import flash.display.MovieClip;
    import flash.display.Shape;
    import flash.geom.*;
    import flash.display.Graphics;
    import flash.events.TimerEvent;
    import flash.utils.Timer;

    public class RotationExample1 extends MovieClip {
        private var ellipse:Shape = new Shape();
        private var speed:int = 10;
        private var ellipse1:Shape;
        private var ellipse2:Shape;
        
        public function RotationExample1():void {

            ellipse1 = drawEllipse(-50, -40, (this.stage.stageWidth / 2), 
                                    (this.stage.stageHeight / 2));
            
            ellipse2 = drawEllipse(30, 40, (this.stage.stageWidth / 2), 
                                          (this.stage.stageHeight / 2));

            this.addChild(ellipse1);
            this.addChild(ellipse2);

            var t:Timer = new Timer(50);
            t.addEventListener(TimerEvent.TIMER, timerHandler);
            t.start();
        }

        private function drawEllipse(x1, y1, x2, y2):Shape {
        
            var e:Shape = new Shape();
            e.graphics.beginFill(0xFF0000);
            e.graphics.lineStyle(2);
            e.graphics.drawEllipse(x1, y1, 100, 80);
            e.graphics.endFill();

            e.x  = x2;  
            e.y  = y2;
            e.z = 1;
            return e;
        }

        private function timerHandler(event:TimerEvent):void {
            ellipse1.rotationY += speed;    
            ellipse1.rotationX -= speed;

            ellipse2.rotationY += speed;    
            ellipse2.rotationX -= speed;
        }
    }
}
rotationY属性 
rotationY:Number  [读写]

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

指示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 y 轴旋转(以度为单位)。从 0 到 180 的值表示顺时针方向旋转;从 0 到 -180 的值表示逆时针方向旋转。对于此范围之外的值,可以通过加上或减去 360 获得该范围内的值。



实现
    public function get rotationY():Number
    public function set rotationY(value:Number):void

示例
在本示例中,两个椭圆使用其 rotationXrotationY 属性进行旋转。第一个椭圆的注册点设置为椭圆的中心点。它围绕自身进行旋转。第二个椭圆围绕一个外部点进行旋转。
package {
    import flash.display.MovieClip;
    import flash.display.Shape;
    import flash.geom.*;
    import flash.display.Graphics;
    import flash.events.TimerEvent;
    import flash.utils.Timer;

    public class RotationExample1 extends MovieClip {
        private var ellipse:Shape = new Shape();
        private var speed:int = 10;
        private var ellipse1:Shape;
        private var ellipse2:Shape;
        
        public function RotationExample1():void {

            ellipse1 = drawEllipse(-50, -40, (this.stage.stageWidth / 2), 
                                    (this.stage.stageHeight / 2));
            
            ellipse2 = drawEllipse(30, 40, (this.stage.stageWidth / 2), 
                                          (this.stage.stageHeight / 2));

            this.addChild(ellipse1);
            this.addChild(ellipse2);

            var t:Timer = new Timer(50);
            t.addEventListener(TimerEvent.TIMER, timerHandler);
            t.start();
        }

        private function drawEllipse(x1, y1, x2, y2):Shape {
        
            var e:Shape = new Shape();
            e.graphics.beginFill(0xFF0000);
            e.graphics.lineStyle(2);
            e.graphics.drawEllipse(x1, y1, 100, 80);
            e.graphics.endFill();

            e.x  = x2;  
            e.y  = y2;
            e.z = 1;
            return e;
        }

        private function timerHandler(event:TimerEvent):void {
            ellipse1.rotationY += speed;    
            ellipse1.rotationX -= speed;

            ellipse2.rotationY += speed;    
            ellipse2.rotationX -= speed;
        }
    }
}
rotationZ属性 
rotationZ:Number  [读写]

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

指示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 z 轴旋转(以度为单位)。从 0 到 180 的值表示顺时针方向旋转;从 0 到 -180 的值表示逆时针方向旋转。对于此范围之外的值,可以通过加上或减去 360 获得该范围内的值。



实现
    public function get rotationZ():Number
    public function set rotationZ(value:Number):void
scale9Grid属性 
scale9Grid:Rectangle  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

当前有效的缩放网格。如果设置为 null,则在应用任何缩放转换时,将正常缩放整个显示对象。

当定义 scale9Grid 属性时,该显示对象被分割到以 scale9Grid 矩形为基础的具有九个区域的网格中,该矩形定义网格的中心区域。网格的其它八个区域如下:

可以认为中心区域(由矩形定义)之外的八个区域类似于在缩放时已应用特殊规则的图片帧。

在设置 scale9Grid 属性并缩放显示对象后,会正常缩放所有文本和渐变;但是,对于对象的其它类型,将应用以下规则:

如果旋转显示对象,则所有后续缩放都是正常的(并会忽略 scale9Grid 属性)。

例如,请考虑以下显示对象和作为该显示对象的 scale9Grid 属性应用的矩形:

显示对象图像

显示对象。

显示对象缩放 9 区域

红色矩形显示 scale9Grid

缩放或拉伸显示对象时,矩形内的对象正常缩放,但是矩形外的对象则按照 scale9Grid 规则进行缩放:

缩放到 75%: 缩放到 75% 的显示对象
缩放到 50%: 缩放到 50% 的显示对象
缩放到 25%: 缩放到 25% 的显示对象
水平拉伸 150%: 拉伸 150% 的显示

设置 scale9Grid 的常见用法是设置用作组件的显示对象,当缩放该组件时,其中的边缘区域保持相同的宽度。



实现
    public function get scale9Grid():Rectangle
    public function set scale9Grid(value:Rectangle):void

引发
ArgumentError — 如果向方法传递的参数无效。

另请参见


示例
以下代码创建一个 Shape 对象,并用该对象的 graphics 属性绘制一个矩形。该矩形将一个 20 像素宽的线条作为边框,并且用渐变填充。该 timer 事件调用 scale() 函数,该函数通过调整 scaleXscaleY 属性来缩放 Shape 对象。 应用于 Shape 对象的 scale9Grid 会阻止缩放矩形的边框线,而只缩放渐变填充:
import flash.display.Shape;
import flash.display.GradientType;
import flash.display.SpreadMethod;
import flash.display.InterpolationMethod;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.utils.Timer;
import flash.events.TimerEvent;

var square:Shape = new Shape();
square.graphics.lineStyle(20, 0xFFCC00);
var gradientMatrix:Matrix = new Matrix();
gradientMatrix.createGradientBox(15, 15, Math.PI, 10, 10);
square.graphics.beginGradientFill(GradientType.RADIAL, 
            [0xffff00, 0x0000ff], 
            [100, 100], 
            [0, 0xFF], 
            gradientMatrix, 
            SpreadMethod.REFLECT, 
            InterpolationMethod.RGB, 
            0.9);
square.graphics.drawRect(0, 0, 100, 100);

var grid:Rectangle = new Rectangle(20, 20, 60, 60);
square.scale9Grid = grid ;

addChild(square);

var tim:Timer = new Timer(100);
tim.start();
tim.addEventListener(TimerEvent.TIMER, scale);

var scaleFactor:Number = 1.01;

function scale(event:TimerEvent):void {
    square.scaleX *= scaleFactor;
    square.scaleY *= scaleFactor;
    
    if (square.scaleX > 2.0) {
        scaleFactor = 0.99;
    }
    if (square.scaleX < 1.0) {
        scaleFactor = 1.01;
    }
}
scaleX属性 
scaleX:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指示从注册点开始应用的对象的水平缩放比例(百分比)。默认注册点为 (0,0)。 1.0 等于 100% 缩放。

缩放本地坐标系统将更改 xy 属性值,这些属性值是以整像素定义的。



实现
    public function get scaleX():Number
    public function set scaleX(value:Number):void

示例
以下代码创建一个 Sprite 对象,并用该对象的 graphics 属性绘制一个矩形。 当用户单击该 Sprite 对象时,它将按 10% 的比例进行缩放:
import flash.display.Sprite;
import flash.events.MouseEvent;

var square:Sprite = new Sprite();
square.graphics.beginFill(0xFFCC00);
square.graphics.drawRect(0, 0, 100, 100);
addChild(square);

square.addEventListener(MouseEvent.CLICK, scale);

function scale(event:MouseEvent):void {
    square.scaleX *= 1.10;
    square.scaleY *= 1.10;
}
scaleY属性 
scaleY:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指示从对象注册点开始应用的对象的垂直缩放比例(百分比)。默认注册点为 (0,0)。 1.0 是 100% 缩放。

缩放本地坐标系统将更改 xy 属性值,这些属性值是以整像素定义的。



实现
    public function get scaleY():Number
    public function set scaleY(value:Number):void

示例
以下代码创建一个 Sprite 对象,并用该对象的 graphics 属性绘制一个矩形。 当用户单击该 Sprite 对象时,它将按 10% 的比例进行缩放:
import flash.display.Sprite;
import flash.events.MouseEvent;

var square:Sprite = new Sprite();
square.graphics.beginFill(0xFFCC00);
square.graphics.drawRect(0, 0, 100, 100);
addChild(square);

square.addEventListener(MouseEvent.CLICK, scale);

function scale(event:MouseEvent):void {
    square.scaleX *= 1.10;
    square.scaleY *= 1.10;
}
scaleZ属性 
scaleZ:Number  [读写]

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

指示从对象的注册点开始应用的对象的深度缩放比例(百分比)。默认注册点为 (0,0)。 1.0 是 100% 缩放。

缩放本地坐标系统将更改 xyz 属性值,这些属性值是以整像素定义的。



实现
    public function get scaleZ():Number
    public function set scaleZ(value:Number):void

另请参见

scrollRect属性 
scrollRect:Rectangle  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

显示对象的滚动矩形范围。显示对象被裁切为矩形定义的大小,当您更改 scrollRect 对象的 xy 属性时,它会在矩形内滚动。

scrollRect Rectangle 对象的属性使用显示对象的坐标空间,并缩放到像整个显示对象一样。滚动显示对象上已裁切窗口的转角范围是显示对象的原点 (0,0) 和矩形的宽度和高度定义的点。它们不按原点居中,而是使用原点定义区域的左上角。滚动的显示对象始终以整像素为增量进行滚动。

您可以通过设置 scrollRect Rectangle 对象的 x 属性来左右滚动对象, 还可以通过设置 scrollRect 对象的 y 属性来上下滚动对象。如果显示对象旋转了 90 度,并且您左右滚动它,则实际上显示对象会上下滚动。



实现
    public function get scrollRect():Rectangle
    public function set scrollRect(value:Rectangle):void

另请参见


示例
下例显示 scrollRect 属性如何为显示对象 circle 定义滚动区域。单击 circle 对象时,clicked() 事件处理函数方法会调整 circle 对象 scrollRect 属性的 y 属性,从而使对象向下滚动:
import flash.display.Sprite;
import flash.geom.Rectangle;
import flash.events.MouseEvent;

var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xFFCC00);
circle.graphics.drawCircle(200, 200, 200);
circle.scrollRect = new Rectangle(0, 0, 200, 200);
addChild(circle);

circle.addEventListener(MouseEvent.CLICK, clicked);

function clicked(event:MouseEvent):void {
    var rect:Rectangle = event.target.scrollRect;
    rect.y -= 5;
    event.target.scrollRect = rect;
}
stage属性 
stage:Stage  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

显示对象的舞台。Flash 应用程序只有一个 Stage 对象。例如,您可以创建多个显示对象并加载到显示列表中,每个显示对象的 stage 属性是指相同的 Stage 对象(即使显示对象属于已加载的 SWF 文件)。

如果显示对象未添加到显示列表,则其 stage 属性会设置为 null



实现
    public function get stage():Stage

示例
以下代码创建两个 TextField 对象并使用 Stage 对象的 width 属性来定位文本字段:
import flash.text.TextField;

var tf1:TextField = new TextField();
tf1.text = "Text Field 1";
tf1.border = true;
tf1.x = 10;
addChild(tf1);
tf1.width = tf1.stage.stageWidth / 2 - 10;

var tf2:TextField = new TextField();
tf2.text = "Text Field 2";
tf2.border = true;
tf2.x = tf1.x + tf1.width + 5;
addChild(tf2);
tf2.width = tf2.stage.stageWidth / 2 - 10;

trace(stage.stageWidth);
transform属性 
transform:Transform  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

一个对象,具有与显示对象的矩阵、颜色转换和像素范围有关的属性。在 Transform 类的条目中对特定属性 matrix、colorTransform 和三个只读属性(concatenatedMatrixconcatenatedColorTransformpixelBounds)进行了说明。

transform 对象的每个属性本身都是一个对象。此概念很重要,因为设置 matrix 或 colorTransform 对象的新值的唯一方法是,创建新对象并将该对象复制到 transform.matrix 或 transform.colorTransform 属性。

例如,要增加显示对象矩阵的 tx 值,您必须制作整个矩阵对象的副本,然后将新对象复制到 transform 对象的 matrix 属性中:

            var myMatrix:Matrix = myDisplayObject.transform.matrix;  
    myMatrix.tx += 10; 
    myDisplayObject.transform.matrix = myMatrix;
          

不能直接设置 tx 属性。下面的代码对 myDisplayObject 不起作用:

            myDisplayObject.transform.matrix.tx += 10;
          

您也可以复制整个 transform 对象并为其赋予另一个显示对象的 transform 属性。例如,下面的代码将整个 transform 对象从 myOldDisplayObj 复制到 myNewDisplayObj

myNewDisplayObj.transform = myOldDisplayObj.transform;

现在,新显示对象 myNewDisplayObj 与旧显示对象 myOldDisplayObj 具有相同的矩阵、颜色转换和像素范围值。



实现
    public function get transform():Transform
    public function set transform(value:Transform):void

另请参见


示例
以下代码设置一个 square Sprite 对象。当用户单击 Sprite 时,transformer() 方法会调整 Sprite transform 属性的 colorTransformmatrix 属性:
import flash.display.Sprite;
import flash.geom.ColorTransform;
import flash.geom.Matrix;
import flash.geom.Transform;
import flash.events.MouseEvent;

var square:Sprite = new Sprite();
square.graphics.lineStyle(20, 0xFF2200);
square.graphics.beginFill(0x0000DD);
square.graphics.drawRect(0, 0, 100, 100);
addChild(square);

var resultColorTransform:ColorTransform = new ColorTransform();
resultColorTransform.alphaMultiplier = 0.5;
resultColorTransform.redOffset = 155;
resultColorTransform.greenMultiplier = 0.5;

var skewMatrix:Matrix = new Matrix(1, 1, 0, 1);

square.addEventListener(MouseEvent.CLICK, transformer);

function transformer(event:MouseEvent):void {
    var transformation:Transform = square.transform;
    var tempMatrix:Matrix = square.transform.matrix;
    tempMatrix.concat(skewMatrix);
    square.transform.colorTransform = resultColorTransform;
    
    square.transform.matrix = tempMatrix;
}
visible属性 
visible:Boolean  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

显示对象是否可见。不可见的显示对象已被禁用。例如,如果 InteractiveObject 实例的 visible=false,则无法单击该对象。



实现
    public function get visible():Boolean
    public function set visible(value:Boolean):void

示例
以下代码使用 Timer 对象调用定期更改显示对象的 visible 属性的函数,从而会产生闪烁的效果:
import flash.text.TextField;
import flash.utils.Timer;
import flash.events.TimerEvent;

var tf:TextField = new TextField();
tf.text = "Hello.";
addChild(tf);

var tim:Timer = new Timer(250);
tim.start();
tim.addEventListener(TimerEvent.TIMER, blinker);

function blinker(event:TimerEvent):void {
    tf.visible = !tf.visible;
}
width属性 
width:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指示显示对象的宽度,以像素为单位。宽度是根据显示对象内容的范围来计算的。如果您设置了 width 属性,则 scaleX 属性会相应调整,如以下代码所示:

var rect:Shape = new Shape();
    rect.graphics.beginFill(0xFF0000);
    rect.graphics.drawRect(0, 0, 100, 100);
    trace(rect.scaleX) // 1;
    rect.width = 200;
    trace(rect.scaleX) // 2;

除 TextField 和 Video 对象以外,没有内容的显示对象(如一个空的 Sprite)的宽度为 0,即使您尝试将 width 设置为其它值,也是这样。



实现
    public function get width():Number
    public function set width(value:Number):void

示例
以下代码设置一个 square Sprite 对象。当用户单击 Sprite 时,widen() 方法会增加 Sprite 的 width 属性:
import flash.display.Sprite;
import flash.events.MouseEvent;

var square:Sprite = new Sprite();
square.graphics.beginFill(0xFF0000);
square.graphics.drawRect(0, 0, 100, 100);
addChild(square);

square.addEventListener(MouseEvent.CLICK, widen);

function widen(event:MouseEvent):void {
    square.width += 10;
}
x属性 
x:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指示 DisplayObject 实例相对于父级 DisplayObjectContainer 本地坐标的 x 坐标。如果该对象位于具有变形的 DisplayObjectContainer 内,则它也位于包含 DisplayObjectContainer 的本地坐标系中。因此,对于逆时针旋转 90 度的 DisplayObjectContainer,该 DisplayObjectContainer 的子级将继承逆时针旋转 90 度的坐标系。对象的坐标指的是注册点的位置。



实现
    public function get x():Number
    public function set x(value:Number):void

示例
以下代码设置一个 circle Sprite 对象。Timer 对象用于每 50 毫秒更改一次 Sprite 的 x 属性:
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;

var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xFF0000);
circle.graphics.drawCircle(100, 100, 100);
addChild(circle);

var tim:Timer = new Timer(50);
tim.start();
tim.addEventListener(TimerEvent.TIMER, bounce);

var xInc:Number = 2;

function bounce(event:TimerEvent):void {
    circle.x += xInc;
    if (circle.x > circle.width) {
        xInc = -2;
    }
    if (circle.x < 0) {
        xInc = 2;
    }
}
y属性 
y:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

指示 DisplayObject 实例相对于父级 DisplayObjectContainer 本地坐标的 y 坐标。如果该对象位于具有变形的 DisplayObjectContainer 内,则它也位于包含 DisplayObjectContainer 的本地坐标系中。因此,对于逆时针旋转 90 度的 DisplayObjectContainer,该 DisplayObjectContainer 的子级将继承逆时针旋转 90 度的坐标系。对象的坐标指的是注册点的位置。



实现
    public function get y():Number
    public function set y(value:Number):void

示例
以下代码创建两个 TextField 对象并调整每个对象的 height 属性(基于每个对象的 textHeight 属性);此外,它还通过设置其 y 属性来定位第二个文本字段:
import flash.text.TextField;

var tf1:TextField = new TextField();
tf1.text = "Text Field 1";
tf1.border = true;
tf1.wordWrap = true;
tf1.width = 40;
tf1.height = tf1.textHeight + 5;
addChild(tf1);

var tf2:TextField = new TextField();
tf2.text = "Text Field 2";
tf2.border = true;
tf2.wordWrap = true;
tf2.width = 40;
tf2.height = tf2.textHeight + 5;
tf2.y = tf1.y + tf1.height + 5;
addChild(tf2);
z属性 
z:Number  [读写]

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

指示 DisplayObject 实例相对于 3D 父容器沿 z 轴的 z 坐标位置。z 属性用于 3D 坐标,而不是屏幕坐标或像素坐标。

当您将显示对象的 z 属性设置为默认值 0 之外的其他值时,将自动创建一个相对应的 Matrix3D 对象,以便调整显示对象在三维中的位置和方向。在使用 z 轴时,x 和 y 属性的现有行为将从屏幕坐标或像素坐标更改为相对于 3D 父容器的位置。

例如,位于 x = 100、y = 100、z = 200 位置的 _root 的子级不在像素位置 (100,100) 处进行绘制。将在 3D 投影计算将其所置之处绘制该子级。计算方法为:

(x*cameraFocalLength/cameraRelativeZPosition, y*cameraFocalLength/cameraRelativeZPosition)



实现
    public function get z():Number
    public function set z(value:Number):void

另请参见


示例
本示例绘制了两个椭圆并使其朝着消失点前后移动(沿 z 轴上下移动)。一个椭圆设置的移动速度要快于另一个。
package {
    import flash.display.MovieClip;
    import flash.display.Shape;
    import flash.display.Graphics;
    import flash.events.Event;
    import flash.geom.*;

    public class ZAxisExample1 extends MovieClip {
        private var ellipse1Back:int = 1;
        private var ellipse2Back:int = 1;
        private var depth:int = 1000;
        
        public function ZAxisExample1():void {
            
            var ellipse1 = drawEllipse((this.stage.stageWidth / 2) - 100, 
                                      (this.stage.stageHeight / 2), 100, 80, 10);
            var ellipse2 = drawEllipse((this.stage.stageWidth / 2) + 100, 
                                      (this.stage.stageHeight / 2), 100, 80, 300);

            this.addChild(ellipse1);
            this.addChild(ellipse2);
            
            ellipse1.addEventListener(Event.ENTER_FRAME, ellipse1FrameHandler);
            ellipse2.addEventListener(Event.ENTER_FRAME, ellipse2FrameHandler);
        }

        private function drawEllipse(x:Number, y:Number, w:Number, h:Number, z:Number):Shape {
            var s:Shape = new Shape();                            
            s.z = z;
            s.graphics.beginFill(0xFF0000);
            s.graphics.lineStyle(2);
            s.graphics.drawEllipse(x, y, w, h);
            s.graphics.endFill();
            return s;
        }

        private function ellipse1FrameHandler(e:Event):void {
            ellipse1Back = setDepth(e, ellipse1Back);
            e.currentTarget.z += ellipse1Back * 10;
        }

        private function ellipse2FrameHandler(e:Event):void {
            ellipse2Back = setDepth(e, ellipse2Back);
            e.currentTarget.z += ellipse2Back * 20;
        }

        private function setDepth(e:Event, d:int):int {
            if(e.currentTarget.z > depth) {
                e.currentTarget.z = depth; 
                d = -1;
            }else if (e.currentTarget.z <  0) {
                e.currentTarget.z = 0;
                d = 1;
            }
            return d;
        }
    }
}
方法详细信息
getBounds()方法
public function getBounds(targetCoordinateSpace:DisplayObject):Rectangle

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

返回一个矩形,该矩形定义相对于 targetCoordinateSpace 对象坐标系的显示对象区域。考虑以下代码,此代码显示了矩形的返回方式根据您传递给该方法的 targetCoordinateSpace 参数的不同而不同:

var container:Sprite = new Sprite();
     container.x = 100;
     container.y = 100;
     this.addChild(container);
     var contents:Shape = new Shape();
     contents.graphics.drawCircle(0,0,100);
     container.addChild(contents);
     trace(contents.getBounds(container));
      // (x=-100, y=-100, w=200, h=200)
     trace(contents.getBounds(this));
      // (x=0, y=0, w=200, h=200)

请注意:使用 localToGlobal()globalToLocal() 方法可以分别将显示对象的本地坐标转换为显示坐标,或将显示坐标转换为本地坐标。

getBounds() 方法与 getRect() 方法类似;但是 getBounds() 方法返回的矩形包括形状的所有笔触,然而 getRect() 方法返回的矩形则不包括。例如,请参阅 getRect() 方法的说明。

参数

targetCoordinateSpace:DisplayObject — 定义要使用的坐标系的显示对象。

返回
Rectangle — 定义与 targetCoordinateSpace 对象坐标系统相关的显示对象面积的矩形。

另请参见

getRect()方法 
public function getRect(targetCoordinateSpace:DisplayObject):Rectangle

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

返回一个矩形,该矩形根据 targetCoordinateSpace 参数定义的坐标系定义显示对象的边界,但不包括形状上的任何笔触。getRect() 方法返回的值等于或小于由 getBounds() 方法返回的值。

请注意:使用 localToGlobal()globalToLocal() 方法可以分别将显示对象的本地坐标转换为舞台坐标,或将舞台坐标转换为本地坐标。

参数

targetCoordinateSpace:DisplayObject — 定义要使用的坐标系的显示对象。

返回
Rectangle — 定义与 targetCoordinateSpace 对象坐标系统相关的显示对象面积的矩形。

另请参见


示例

下例显示 getBounds() 方法如何由于笔触占据的更多区域而比 getRect() 方法返回更大的矩形。 在这种情况下,triangle Sprite 包括其他笔触,因为有 lineStyle() 方法的 widthjointStyle 参数。trace() 输出(在最后两行中)显示了 getRect()getBounds() 矩形之间的差异:
import flash.display.CapsStyle;
import flash.display.JointStyle;
import flash.display.LineScaleMode;
import flash.display.Sprite;
import flash.geom.Rectangle;

var triangle:Sprite = new Sprite();
var color:uint = 0xFF0044;
var width:Number = 20;
var alpha:Number = 1.0;
var pixelHinting:Boolean = true;
var scaleMode:String = LineScaleMode.NORMAL;
var caps:String = CapsStyle.SQUARE;
var joints:String = JointStyle.MITER;
triangle.graphics.lineStyle(width, color, alpha, pixelHinting, scaleMode, caps, joints);

var triangleSide:Number = 100;
triangle.graphics.moveTo(0, 0);
triangle.graphics.lineTo(0, triangleSide);
triangle.graphics.lineTo(triangleSide, triangleSide);
triangle.graphics.lineTo(0, 0);

addChild(triangle);

trace(triangle.getBounds(this)); // (x=-10, y=-24.1, w=134.10000000000002, h=134.1)
trace(triangle.getRect(this));     // (x=0, y=0, w=100, h=100)
globalToLocal()方法 
public function globalToLocal(point:Point):Point

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

point 对象从舞台(全局)坐标转换为显示对象的(本地)坐标。

要使用此方法,请先创建 Point 类的一个实例。您分配的 xy 值表示全局坐标,因为它们是相对于主显示区域的原点 (0,0) 的。然后将 Point 实例作为参数传递给 globalToLocal() 方法。该方法会返回一个新的 Point 对象,该对象具有相对于显示对象原点(而不是舞台原点)的 xy 值。

参数

point:Point — 用 Point 类创建的对象。该 Point 对象指定 xy 坐标作为属性。

返回
Point — 具有相对于显示对象的坐标的 Point 对象。

另请参见


示例

以下代码创建一个 Shape 对象,并显示使用不同点作为参数调用 hitTestPoint() 方法的结果。globalToLocal() 方法将点从 Stage 坐标转换到该形状的坐标空间:
import flash.display.Shape;
import flash.geom.Point;

var circle:Shape = new Shape();
circle.graphics.beginFill(0x0000FF);
circle.graphics.drawCircle(40, 40, 40);
circle.x = 10;
addChild(circle);

var point1:Point = new Point(0, 0);
trace(circle.hitTestPoint(point1.x, point1.y, true)); // false
trace(circle.hitTestPoint(point1.x, point1.y, false)); // false
trace(circle.globalToLocal(point1)); // [x=-10, y=0]

var point2:Point = new Point(10, 1);
trace(circle.hitTestPoint(point2.x, point2.y, true)); // false
trace(circle.hitTestPoint(point2.x, point2.y, false)); // true
trace(circle.globalToLocal(point2)); // [x=0, y=1]

var point3:Point = new Point(30, 20);
trace(circle.hitTestPoint(point3.x, point3.y, true)); // true
trace(circle.hitTestPoint(point3.x, point3.y, false)); // true
trace(circle.globalToLocal(point3)); // [x=20, y=20]
globalToLocal3D()方法 
public function globalToLocal3D(point:Point):Vector3D

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

将二维点从舞台(全局)坐标转换为三维显示对象的(本地)坐标。

要使用此方法,请先创建 Point 类的一个实例。分配给 Point 对象的 x 和 y 值表示全局坐标,原因是这些坐标相对于主显示区域的原点 (0,0)。然后,将 Point 对象作为 point 参数传递给 globalToLocal3D() 方法。该方法会以一个 Vector3D 对象的形式返回三维坐标,该对象包含相对于三维显示对象的原点的 xyz 值。

参数

point:Point — 表示全局 x 坐标和 y 坐标的二维 Point 对象。

返回
Vector3D — 具有相对于三维显示对象的坐标的 Vector3D 对象。
hitTestObject()方法 
public function hitTestObject(obj:DisplayObject):Boolean

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

计算显示对象,以确定它是否与 obj 显示对象重叠或相交。

参数

obj:DisplayObject — 要测试的显示对象。

返回
Boolean — 如果显示对象相交,则为 true;否则为 false

示例

以下代码创建三个 Shape 对象,并显示调用 hitTestObject() 方法的结果:
import flash.display.Shape;

var circle1:Shape = new Shape();
circle1.graphics.beginFill(0x0000FF);
circle1.graphics.drawCircle(40, 40, 40);
addChild(circle1);

var circle2:Shape = new Shape();
circle2.graphics.beginFill(0x00FF00);
circle2.graphics.drawCircle(40, 40, 40);
circle2.x = 50;
addChild(circle2);

var circle3:Shape = new Shape();
circle3.graphics.beginFill(0xFF0000);
circle3.graphics.drawCircle(40, 40, 40);
circle3.x = 100;
circle3.y = 67;
addChild(circle3);

trace(circle1.hitTestObject(circle2)); // true
trace(circle1.hitTestObject(circle3)); // false
trace(circle2.hitTestObject(circle3)); // true
hitTestPoint()方法 
public function hitTestPoint(x:Number, y:Number, shapeFlag:Boolean = false):Boolean

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

计算显示对象,以确定它是否与 xy 参数指定的点重叠或相交。xy 参数指定舞台的坐标空间中的点,而不是包含显示对象的显示对象容器中的点(除非显示对象容器是舞台)。

参数

x:Number — 要测试的此对象的 x 坐标。
 
y:Number — 要测试的此对象的 y 坐标。
 
shapeFlag:Boolean (default = false) — 是检查对象 (true) 的实际像素,还是检查边框 (false) 的实际像素。

返回
Boolean — 如果显示对象与指定的点重叠或相交,则为 true;否则为 false

另请参见


示例

以下代码创建一个 Shape 对象,并显示使用不同点作为参数调用 hitTestPoint() 方法的结果。globalToLocal() 方法将点从 Stage 坐标转换到该形状的坐标空间:
import flash.display.Shape;
import flash.geom.Point;

var circle:Shape = new Shape();
circle.graphics.beginFill(0x0000FF);
circle.graphics.drawCircle(40, 40, 40);
circle.x = 10;
addChild(circle);

var point1:Point = new Point(0, 0);
trace(circle.hitTestPoint(point1.x, point1.y, true)); // false
trace(circle.hitTestPoint(point1.x, point1.y, false)); // false
trace(circle.globalToLocal(point1)); // [x=-10, y=0]

var point2:Point = new Point(10, 1);
trace(circle.hitTestPoint(point2.x, point2.y, true)); // false
trace(circle.hitTestPoint(point2.x, point2.y, false)); // true
trace(circle.globalToLocal(point2)); // [x=0, y=1]

var point3:Point = new Point(30, 20);
trace(circle.hitTestPoint(point3.x, point3.y, true)); // true
trace(circle.hitTestPoint(point3.x, point3.y, false)); // true
trace(circle.globalToLocal(point3)); // [x=20, y=20]
local3DToGlobal()方法 
public function local3DToGlobal(point3d:Vector3D):Point

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

将三维显示对象的(本地)坐标的三维点转换为舞台(全局)坐标中的二维点。

例如,您只能使用二维坐标 (x,y) 来通过 display.Graphics 方法进行绘制。若要绘制三维对象,您需要将显示对象的三维坐标映射到二维坐标。首先,创建一个保存三维显示对象的 x、y 和 z 坐标的 Vector3D 类的实例。然后,将 Vector3D 对象作为 point3d 参数传递给 local3DToGlobal() 方法。该方法会返回一个二维的 Point 对象,可将该对象与图形 API 一起使用来绘制三维对象。

参数

point3d:Vector3D — 一个包含三维点或三维显示对象的坐标的 Vector3D 对象。

返回
Point — 一个表示二维空间中的三维点的二维点。

示例

本示例使用 display.Graphics 方法在二维空间中绘制简单的三维立方体。由于 this 显示对象的位置是偏移位置,因此立方体的注册点将位于其中心。Vector3D 对象的矢量保存立方体的三维坐标。首先绘制立方体的顶部,再绘制底部,然后将顶部的四个角与底部的四个角相连。您需要在绘制立方体之前先将其添加到显示对象容器中,这样才能使用 local3DToGlobal() 方法。
package {
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.display.Graphics;
    import flash.geom.*;

    public class Local3DToGlobalExample extends MovieClip {
        private var myCube:Sprite = new Sprite();
        private var v8:Vector.<Vector3D> = new Vector.<Vector3D>(8);

        public function Local3DToGlobalExample():void {
            this.x = -(this.stage.stageWidth / 2);
            this.y = -(this.stage.stageWidth / 2);

            v8[0] = new Vector3D(-40,-40,-40);
            v8[1] = new Vector3D(40,-40,-40);
            v8[2] = new Vector3D(40,-40,40);
            v8[3] = new Vector3D(-40,-40,40);
            v8[4] = new Vector3D(-40,100,-40);
            v8[5] = new Vector3D(40,100,-40);
            v8[6] = new Vector3D(40,100,40);
            v8[7] = new Vector3D(-40,100,40);

            myCube.x = (this.stage.stageWidth / 2);
            myCube.y = (this.stage.stageWidth / 2);
            myCube.z = 1;
            addChild(myCube);

            Cube();         
        }

        private function Cube():void {
            var ps:Point = new Point(0,0);

            myCube.graphics.lineStyle(2,0xFF0000);

            ps = myCube.local3DToGlobal(v8[0]);
            myCube.graphics.moveTo(ps.x, ps.y);
            ps = myCube.local3DToGlobal(v8[1]);
            myCube.graphics.lineTo(ps.x, ps.y);
            ps = myCube.local3DToGlobal(v8[2]);
            myCube.graphics.lineTo(ps.x, ps.y);
            ps = myCube.local3DToGlobal(v8[3]);
            myCube.graphics.lineTo(ps.x, ps.y);
            ps = myCube.local3DToGlobal(v8[0]);
            myCube.graphics.lineTo(ps.x, ps.y);

            ps = myCube.local3DToGlobal(v8[4]);
            myCube.graphics.moveTo(ps.x, ps.y);
            ps = myCube.local3DToGlobal(v8[5]);
            myCube.graphics.lineTo(ps.x, ps.y);
            ps = myCube.local3DToGlobal(v8[6]);
            myCube.graphics.lineTo(ps.x, ps.y);
            ps = myCube.local3DToGlobal(v8[7]);
            myCube.graphics.lineTo(ps.x, ps.y);
            ps = myCube.local3DToGlobal(v8[4]);
            myCube.graphics.lineTo(ps.x, ps.y);

            ps = myCube.local3DToGlobal(v8[0]);
            myCube.graphics.moveTo(ps.x, ps.y);
            ps = myCube.local3DToGlobal(v8[4]);
            myCube.graphics.lineTo(ps.x, ps.y);
            ps = myCube.local3DToGlobal(v8[1]);
            myCube.graphics.moveTo(ps.x, ps.y);
            ps = myCube.local3DToGlobal(v8[5]);
            myCube.graphics.lineTo(ps.x, ps.y);
            ps = myCube.local3DToGlobal(v8[2]);
            myCube.graphics.moveTo(ps.x, ps.y);
            ps = myCube.local3DToGlobal(v8[6]);
            myCube.graphics.lineTo(ps.x, ps.y);
            ps = myCube.local3DToGlobal(v8[3]);
            myCube.graphics.moveTo(ps.x, ps.y);
            ps = myCube.local3DToGlobal(v8[7]);
            myCube.graphics.lineTo(ps.x, ps.y);
        }
    }
}
localToGlobal()方法 
public function localToGlobal(point:Point):Point

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

point 对象从显示对象的(本地)坐标转换为舞台(全局)坐标。

此方法允许您将任何给定的 xy 坐标从相对于特定显示对象原点 (0,0) 的值(本地坐标)转换为相对于舞台原点的值(全局坐标)。

要使用此方法,请先创建 Point 类的一个实例。您分配的 xy 的值表示本地坐标,因为它们是相对于显示对象原点的值。

然后,您可以将创建的 Point 实例作为参数传递给 localToGlobal() 方法。该方法会返回一个新的 Point 对象,该对象具有相对于舞台原点(而不是显示对象原点)的 xy 值。

参数

point:Point — 使用 Point 类创建的点的名称或标识符,指定 xy 坐标作为属性。

返回
Point — 具有相对于舞台的坐标的 Point 对象。

另请参见


示例

以下代码可创建一个 Sprite 对象。该 Sprite 对象的 mouseXmouseY 属性位于显示对象的坐标空间中。此代码使用 localToGlobal() 方法将这些属性转换为全局(舞台)坐标:
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.geom.Point;

var square:Sprite = new Sprite();
square.graphics.beginFill(0xFFCC00);
square.graphics.drawRect(0, 0, 100, 100);
square.x = 100;
square.y = 200;

addChild(square);

square.addEventListener(MouseEvent.CLICK, traceCoordinates)

function traceCoordinates(event:MouseEvent):void {
    var clickPoint:Point = new Point(square.mouseX, square.mouseY);
    trace("display object coordinates:", clickPoint);
    trace("stage coordinates:", square.localToGlobal(clickPoint));
}
事件详细信息
added 事件
事件对象类型: flash.events.Event
属性 Event.type = flash.events.Event.ADDED

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

将显示对象添加到显示列表中时调度。以下方法会触发此事件:DisplayObjectContainer.addChild()DisplayObjectContainer.addChildAt()

Event.ADDED 常量定义 added 事件对象的 type 属性值。

added 事件适用于 ActionScript 3.0 显示列表并且与 JavaScript 代码无关。

此事件具有以下属性:

属性
bubbles true
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 要添加到显示列表中的 DisplayObject 实例。target 不一定是显示列表中注册此事件侦听器的对象。请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。

另请参见

addedToStage 事件  
事件对象类型: flash.events.Event
属性 Event.type = flash.events.Event.ADDED_TO_STAGE

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9.0.28.0

在将显示对象直接添加到舞台显示列表或将包含显示对象的子树添加至舞台显示列表中时调度。以下方法会触发此事件:DisplayObjectContainer.addChild()DisplayObjectContainer.addChildAt()

Event.ADDED_TO_STAGE 常量定义 addedToStage 事件对象的 type 属性值。

addedToStage 事件适用于 ActionScript 3.0 显示列表并且与 JavaScript 代码无关。

此事件具有以下属性:

属性
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target DisplayObject 实例将添加到舞台的显示列表中,可直接添加它,也可以添加包含 DisplayObject 实例的子树。如果 DisplayObject 实例将被直接添加,会在此事件之前发生 added 事件。

另请参见

enterFrame 事件  
事件对象类型: flash.events.Event
属性 Event.type = flash.events.Event.ENTER_FRAME

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

[播放事件] 播放头进入新帧时调度。如果播放头不移动,或者只有一帧,则会继续以帧速率调度此事件。此事件为广播事件,这意味着具有注册了此事件的侦听器的所有显示对象都会调度此事件。

Event.ENTER_FRAME 常量定义 enterFrame 事件对象的 type 属性值。

注意:此事件既不具有“捕获阶段”也不具有“冒泡阶段”,这意味着必须直接将事件侦听器添加到任何潜在的目标,而无论目标是否位于显示列表中。

此事件具有以下属性:

属性
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 具有为 enterFrame 事件注册的侦听器的任何 DisplayObject 实例。
exitFrame 事件  
事件对象类型: flash.events.Event
属性 Event.type = flash.events.Event.EXIT_FRAME

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

[广播事件] 播放头退出当前帧时调度。所有帧脚本已运行。如果播放头不移动,或者只有一帧,则会继续以帧频调度此事件。 此事件为广播事件,这意味着具有注册了此事件的侦听器的所有显示对象都会调度此事件。

Event.EXIT_FRAME 常量定义 exitFrame 事件对象的 type 属性的值。

注意:此事件既不具有“捕获阶段”也不具有“冒泡阶段”,这意味着必须直接将事件侦听器添加到任何潜在的目标,而无论目标是否位于显示列表中。

此事件具有以下属性:

属性
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 具有为 enterFrame 事件注册的侦听器的任何 DisplayObject 实例。
frameConstructed 事件  
事件对象类型: flash.events.Event
属性 Event.type = flash.events.Event.FRAME_CONSTRUCTED

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

[广播事件] 在帧显示对象的构造函数运行之后但在帧脚本运行之前调度。如果播放头不移动,或者只有一帧,则会继续以帧速率调度此事件。此事件为广播事件,这意味着具有注册了此事件的侦听器的所有显示对象都会调度此事件。

Event.FRAME_CONSTRUCTED 常量定义 frameConstructed 事件对象的 type 属性的值。

注意:此事件既不具有“捕获阶段”也不具有“冒泡阶段”,这意味着必须直接将事件侦听器添加到任何潜在的目标,而无论目标是否位于显示列表中。

此事件具有以下属性:

属性
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 具有为 frameConstructed 事件注册的侦听器的任何 DisplayObject 实例。
removed 事件  
事件对象类型: flash.events.Event
属性 Event.type = flash.events.Event.REMOVED

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

将要从显示列表中删除显示对象时调度。DisplayObjectContainer 类的以下两个方法会生成此事件:removeChild()removeChildAt()

如果必须删除某个对象来为新对象提供空间,则 DisplayObjectContainer 对象的下列方法也会生成此事件:addChild()addChildAt()setChildIndex()

Event.REMOVED 常量定义 removed 事件对象的 type 属性值。

removed 事件适用于 ActionScript 3.0 显示列表并且与 JavaScript 代码无关。

此事件具有以下属性:

属性
bubbles true
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 要从显示列表中删除的 DisplayObject 实例。target 不一定是显示列表中注册此事件侦听器的对象。请使用 currentTarget 属性来访问显示列表中当前正在处理此事件的对象。
removedFromStage 事件  
事件对象类型: flash.events.Event
属性 Event.type = flash.events.Event.REMOVED_FROM_STAGE

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9.0.28.0

在从显示列表中直接删除显示对象或删除包含显示对象的子树时调度。DisplayObjectContainer 类的以下两个方法会生成此事件:removeChild()removeChildAt()

如果必须删除某个对象来为新对象提供空间,则 DisplayObjectContainer 对象的下列方法也会生成此事件:addChild()addChildAt()setChildIndex()

Event.REMOVED_FROM_STAGE 常量定义 removedFromStage 事件对象的 type 属性值。

removedFromStage 事件适用于 ActionScript 3.0 显示列表并且与 JavaScript 代码无关。

此事件具有以下属性:

属性
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target DisplayObject 实例将从舞台的显示列表中删除,可直接删除它,也可以删除包含 DisplayObject 实例的子树。如果 DisplayObject 实例将被直接删除,会在此事件之前发生 removed 事件。
render 事件  
事件对象类型: flash.events.Event
属性 Event.type = flash.events.Event.RENDER

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

[广播事件] 将要更新和呈现显示列表时调度。此事件为侦听此事件的对象在呈现显示列表之前进行更改提供了最后的机会。每次希望调度 render 事件时,必须调用 Stage 对象的 invalidate() 方法。Render 事件与调用 Stage.invalidate() 的对象互相信任时,它才会被调度给某个对象。此事件为广播事件,这意味着具有注册了此事件的侦听器的所有显示对象都会调度此事件。

注意:如果显示未呈现,则不会调度此事件。当内容最小化或遮蔽时会出现这种情况。

Event.RENDER 常量定义 render 事件对象的 type 属性的值。

注意:此事件既不具有“捕获阶段”也不具有“冒泡阶段”,这意味着必须直接将事件侦听器添加到任何潜在的目标,而无论目标是否位于显示列表中。

此事件具有以下属性:

属性
bubbles false
cancelable false;不能取消默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 具有为 render 事件注册的侦听器的任何 DisplayObject 实例。
示例 如何使用示例
DisplayObjectExample.as

下例使用 DisplayObjectExample 类在舞台的角上绘制了一个橙色的正方形,然后通过显示每个事件的文本信息对事件作出响应。执行下列步骤可完成该任务:
  1. 声明用于正方形的颜色和大小的类属性。
  2. 构造函数调用 draw() 方法,在舞台上的默认坐标处 (x = 0, y = 0) 绘制一个橙色的正方形。
  3. 将以下事件侦听器方法附加到该正方形:
    • addedHandler() 侦听 added 事件,该事件在将正方形添加到显示列表中时调度。
    • enterFrameHandler() 侦听 enterFrame 事件,它在本示例中没有实际意义。
    • removedHandler() 侦听 removed 事件,该事件在将正方形从显示列表中删除(单击该正方形时会发生此情况)时调度。
    • clickHandler() 侦听 click 事件,该事件在单击该橙色正方形时调度。
    • renderHandler() 在显示列表更新之后侦听 render 事件。
package {
    import flash.display.Sprite;

    public class DisplayObjectExample extends Sprite {
        public function DisplayObjectExample() {
            var child:CustomDisplayObject = new CustomDisplayObject();
            addChild(child);
        }
    }
}

import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.display.Stage;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.*;

class CustomDisplayObject extends Sprite {
    private var bgColor:uint = 0xFFCC00;
    private var size:uint    = 80;

    public function CustomDisplayObject() {
        draw();
        addEventListener(Event.ADDED, addedHandler);
        addEventListener(Event.ENTER_FRAME, enterFrameHandler);
        addEventListener(Event.REMOVED, removedHandler);
        addEventListener(MouseEvent.CLICK, clickHandler);
        addEventListener(Event.RENDER, renderHandler);
    }

    private function draw():void {
        graphics.beginFill(bgColor);
        graphics.drawRect(0, 0, size, size);
        graphics.endFill();
    }

    private function clickHandler(event:MouseEvent):void {
        trace("clickHandler: " + event);
        parent.removeChild(this);
    }

    private function addedHandler(event:Event):void {
        trace("addedHandler: " + event);
        stage.scaleMode = StageScaleMode.NO_SCALE;
        stage.align = StageAlign.TOP_LEFT;
        stage.addEventListener("resize", resizeHandler);
    }

    private function enterFrameHandler(event:Event):void {
        trace("enterFrameHandler: " + event);
        removeEventListener("enterFrame", enterFrameHandler);
    }

    private function removedHandler(event:Event):void {
        trace("removedHandler: " + event);
        stage.removeEventListener("resize", resizeHandler);
    }

    private function renderHandler(event:Event):void {
        trace("renderHandler: " + event);
    }

    private function resizeHandler(event:Event):void {
        trace("resizeHandler: " + event);
    }
}