套件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 中顯示的所有物件。 您可以使用 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 實體,以偵聽廣播事件。除了已列在 DisplayObject 類別的「事件」表格中的廣播事件之外,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


公用屬性
 屬性定義自
  accessibilityProperties : AccessibilityProperties
此顯示物件的目前輔助功能選項。
DisplayObject
  alpha : Number
指出所指定物件的 Alpha 透明度值。
DisplayObject
  blendMode : String
來自 BlendMode 類別的值,會指定要使用何種混合模式。
DisplayObject
  blendShader : Shader
[唯寫] 設定用來混合前景和背景的著色器。
DisplayObject
  cacheAsBitmap : Boolean
如果設定為 true,Flash Player 就會快取顯示物件的內部點陣圖表示法。
DisplayObject
 Inheritedconstructor : Object
類別物件的參照或是特定物件實體的建構函數。
Object
  filters : Array
索引的陣列,其中包含目前和顯示物件相關的每個濾鏡物件。
DisplayObject
  height : Number
指出顯示物件的高度¡以像素為單位。
DisplayObject
  loaderInfo : LoaderInfo
[唯讀] 會傳回 LoaderInfo 物件,其中包含關於載入此顯示物件所屬之檔案的資訊。
DisplayObject
  mask : DisplayObject
呼叫之顯示物件會以指定的 mask 物件遮蓋。
DisplayObject
  mouseX : Number
[唯讀] 指出滑鼠位置的 x 座標,以像素為單位。
DisplayObject
  mouseY : Number
[唯讀] 指出滑鼠位置的 y 座標,以像素為單位。
DisplayObject
  name : String
指出 DisplayObject 的實體名稱。
DisplayObject
  opaqueBackground : Object
會指定顯示物件是否不透明,並具有特定背景顏色。
DisplayObject
  parent : DisplayObjectContainer
[唯讀] 指出包含此顯示物件的 DisplayObjectContainer 物件。
DisplayObject
 Inheritedprototype : Object
[靜態] 類別或函數物件之原型物件的參照。
Object
  root : DisplayObject
[唯讀] 對載入之 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
指出從註冊點套用的物件水平縮放 (percentage)。
DisplayObject
  scaleY : Number
指出從物件註冊點套用的物件垂直縮放 (percentage)。
DisplayObject
  scaleZ : Number
指出從物件註冊點套用的物件深度縮放 (百分比)。
DisplayObject
  scrollRect : Rectangle
顯示物件的捲動矩形範圍。
DisplayObject
  stage : Stage
[唯讀] 顯示物件的「舞台」。
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
  
DisplayObject
  
getBounds(targetCoordinateSpace:DisplayObject):Rectangle
傳回可定義顯示物件區域 (相對於 targetCoordinateSpace 物件的座標系統) 的矩形。
DisplayObject
  
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
  
DisplayObject
  
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 取得作業系統焦點並成為作用中時傳送。EventDispatcher
  當顯示物件加入顯示清單中時傳送。DisplayObject
  會在顯示物件加入舞台上的顯示清單時,以直接或是透過加入包含該顯示物件之子樹狀結構的方式傳送。DisplayObject
 Inherited[廣播事件] 當 Flash Player 失去作業系統焦點並成為非作用中時傳送。EventDispatcher
  [廣播事件] 當播放磁頭進入新影格時傳送。DisplayObject
  [廣播事件] 當播放磁頭結束目前影格時傳送。DisplayObject
  [廣播事件] 在影格顯示物件的建構函式執行之後,且影格 Script 執行之前傳送。DisplayObject
  會當顯示物件將要從顯示清單移除時傳送。DisplayObject
  會在顯示物件即將從顯示清單移除時,以直接或是透過移除包含該顯示物件之子樹狀結構的方式傳送。DisplayObject
  [廣播事件] 當顯示清單將要更新和顯示時傳送。DisplayObject
屬性詳細資訊
accessibilityProperties屬性
accessibilityProperties:AccessibilityProperties  [讀寫]

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9

此顯示物件的目前輔助功能選項。 如果您要修改 accessibilityProperties 屬性或 accessibilityProperties 中的任何欄位,必須呼叫 Accessibility.updateProperties() 方法,才能使變更生效。

注意:對於在 Flash 編寫環境中建立的物件而言,accessibilityProperties 的值會預先填入您在「輔助功能」面板中輸入與該物件相關的任何資訊。


實作
    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 會將此值設成 BlendMode.NORMAL

Flash Player 會將 blendMode 屬性套用在顯示物件的每一個像素上。 每一個像素都是由三原色 (紅、綠、藍) 所構成,而每一個原色都具有介於 0x00 和 0xFF 之間的值。Flash Player 會將影片片段中像素的每一個原色拿來和背景中像素的相對應顏色做比較, 例如,如果 blendMode 是設為 BlendMode.LIGHTEN,則 Flash Player 會比較顯示物件的紅色值與背景的紅色值,然後使用兩個值中較明亮者做為顏色顯示的紅色組件值。

下表將說明 blendMode 設定。 BlendMode 類別會定義您可以使用的字串值。 下表中的圖例說明了套用到圓形顯示物件 (2) 的 blendMode 值,此圓形顯示物件疊在另一個顯示物件 (1) 上。

編號 1 方形 編號 2 圓形

BlendMode Constant圖例說明
BlendMode.NORMALNORMAL 混合模式顯示物件出現在背景前面。 顯示物件的像素值會覆寫背景的像素值。 只要顯示物件是透明的,就可以看見背景。
BlendMode.LAYERLAYER 混合模式強制建立顯示物件的透明度群組。 這表示顯示物件在進行後續處理前,已預先於暫存緩衝區中組成。 如果顯示物件使用點陣圖快取來預先快取處理,或者如果顯示物件是顯示物件容器 (其中包含帶有 blendMode 設定,而不是 BlendMode.NORMAL 設定的子物件),這項作業就會自動完成。
BlendMode.MULTIPLYMULTIPLY 混合模式將顯示物件基本顏色的值乘以背景顏色的值,然後除以 0xFF 以進行一般化,得到比較暗的顏色。 這個設定通常用於陰影和深度效果。

例如,如果顯示物件中某個像素的某個基本顏色 (例如紅色) 以及背景像素的對應顏色都具有 0x88 的值,相乘的結果就是 0x4840。 除以 0xFF 則會得到該基本顏色 0x48 的值,這是比顯示物件或背景的顏色都還要暗的顏色。

BlendMode.SCREENSCREEN 混合模式將顯示物件的互補色 (反色) 乘以背景的互補色,便會產生漂白特效。 這個設定通常用於反白效果,或用於移除顯示物件的黑暗區域。
BlendMode.LIGHTENLIGHTEN 混合模式在顯示物件基本顏色和背景顏色中選取比較淡的顏色 (其值較大的顏色)。 此設定常用於疊加類型。

例如,如果顯示物件有一個 RGB 值是 0xFFCC33 的像素,且背景像素的 RGB 值為 0xDDF800,那麼顯示的像素的 RGB 值就是 0xFFF833 (因為 0xFF > 0xDD,0xCC < 0xF8,而 0x33 > 0x00 = 33)。

BlendMode.DARKENDARKEN 混合模式在顯示物件基本顏色和背景顏色中選取比較暗的顏色 (其值較小的顏色)。 此設定常用於疊加類型。

例如,如果顯示物件有一個 RGB 值是 0xFFCC33 的像素,且背景像素的 RGB 值為 0xDDF800,那麼顯示的像素的 RGB 值就是 0xDDCC00 (因為 0xFF > 0xDD,0xCC < 0xF8,而 0x33 > 0x00 = 33)。

BlendMode.DIFFERENCEDIFFERENCE 混合模式比較顯示物件基本顏色和背景顏色,然後將兩者中比較淡的顏色值減去比較暗的顏色值。 此設定常用於較鮮明的顏色。

例如,如果顯示物件有一個 RGB 值是 0xFFCC33 的像素,且背景像素的 RGB 值為 0xDDF800,那麼顯示的像素的 RGB 值就是 0x222C33 (因為 0xFF - 0xDD = 0x22,0xF8 - 0xCC = 0x2C,而 0x33 - 0x00 = 0x33)。

BlendMode.ADDADD 混合模式將顯示物件基本顏色的值加上背景顏色的值,最大只能套用 0xFF。 這個設定通常用於讓兩個物件之間變亮的溶解效果更加鮮活。

例如,如果顯示物件有一個 RGB 值是 0xAAA633 的像素,且背景像素的 RGB 值為 0xDD2200,那麼顯示的像素的 RGB 值就是 0xFFC833 (因為 0xAA + 0xDD > 0xFF,0xA6 + 0x22 = 0xC8,而 0x33 + 0x00 = 0x33)。

BlendMode.SUBTRACTSUBTRACT 混合模式從背景顏色的值減去顯示物件基本顏色的值,最小只能套用 0。 這個設定通常用於讓兩個物件之間變暗的溶解效果更加鮮活。

例如,如果顯示物件有一個 RGB 值是 0xAA2233 的像素,且背景像素的 RGB 值為 0xDDA600,那麼顯示的像素的 RGB 值就是 0x338400 (因為 0xDD - 0xAA = 0x33,0xA6 - 0x22 = 0x84,而 0x00 - 0x33 < 0x00)。

BlendMode.INVERTINVERT 混合模式反轉背景。
BlendMode.ALPHAALPHA 混合模式將顯示物件中每個像素的 Alpha 值套用到背景。 您需要將父輩顯示物件的 blendMode 設定設為 BlendMode.LAYER。 例如,在圖例中,父輩顯示物件是白色的背景,其設定為 blendMode = BlendMode.LAYER
BlendMode.ERASEERASE 混合模式根據顯示物件的 Alpha 值擦除背景。 您需要將父輩顯示物件的 blendMode 設為 BlendMode.LAYER。 例如,在圖例中,父輩顯示物件是白色的背景,其設定為 blendMode = BlendMode.LAYER
BlendMode.OVERLAYOVERLAY 混合模式根據背景的暗度調整每個像素的顏色。 如果背景比 50% 灰階還要亮,顯示物件和背景顏色會被遮蔽,結果產生較明亮的顏色。 如果背景比 50% 灰階還要暗,顏色會相乘,得到比較暗的顏色。 此設定常用於陰影效果。
BlendMode.HARDLIGHTHARDLIGHT 混合模式根據顯示物件的暗度調整每個像素的顏色。 如果顯示物件比 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

設定用來混合前景和背景的著色器。當 blendMode 屬性設為 BlendMode.SHADER,指定的 Shader 可用來建立顯示物件的混合模式輸出。

將顯示物件的 blendShader 屬性設定為 Shader 實體會自動將顯示物件的 blendMode 屬性設為 BlendMode.SHADER。如果設定了 blendShader 屬性 (此屬性會將 blendMode 屬性設為 BlendMode.SHADER),則 blendMode 屬性的值會變更,而您只需將 blendMode 屬性設為 BlendMode.SHADER,就能輕鬆地重設混合模式以便使用混合著色器。blendShader 屬性不需要再次重設,除非您需要變更用於混合模式的著色器。

指派給 blendShader 屬性的 Shader 至少必須指定 2 個 image4 輸入。此輸入「不」一定得使用關聯的 ShaderInput 物件之 input 屬性於程式碼中指定。背景顯示物件會自動用來當作第一個輸入 (包含 index 0 的輸入)。 前景顯示物件會用來當作第二個輸入 (包含 index 1 的輸入)。做為混合著色器使用的著色器可以指定 2 個以上的輸入。在此情況下,任何其他輸入都必須設定自身 ShaderInput 實體的 input 屬性來加以指定。

當您將 Shader 實體指派給此屬性時,著色器就會在內部複製。混合作業會使用該內部副本,而不是原始著色器的參考。任何對著色器的變更,例如變更參數值、輸入,或是位元組碼,都不會套用到用於混合模式上的著色器副本。


實作
    flash10 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 就會快取顯示物件的內部點陣圖表示法。這種快取可以增加含有複雜向量內容之顯示物件的執行效能。

已進行點陣圖快取之顯示物件中的所有向量資料都將繪製成點陣圖,而非主要顯示。 然後將點陣圖複製到主要顯示當做未延伸、未旋轉的像素,且貼齊到最近的像素邊界。 像素和父物件是 1 比 1 對應。 如果變更點陣圖的邊界,會重新建立點陣圖而非延伸點陣圖。

您必須先將 cacheAsBitmap 屬性設為 true,才能建立內部點陣圖。

將顯示物件的 cacheAsBitmap 屬性設為 true 後,呈現方式並沒有改變,但顯示物件會自動執行像素貼齊。 在不同複雜程度的向量內容上,動畫速度都可以獲得明顯的提升。

只要將濾鏡套用到顯示物件 (若其 filter 陣列不是空的),cacheAsBitmap 屬性就會自動設為 true;因此,如果顯示物件套用了濾鏡,則該顯示物件的 cacheAsBitmap 就會報告為 true,即使已將屬性設定為 false,亦是如此。 如果您將顯示物件的所有濾鏡清除,cacheAsBitmap 設定就會變更為上一次的設定。

在下列情況中,即使 cacheAsBitmap 屬性已設為 true,且透過向量資料來呈現,顯示物件也不會使用點陣圖:

cacheAsBitmap 屬性最適合與主要為靜態內容且不會經常縮放和旋轉的影片片段搭配使用。 對於這類影片片段,cacheAsBitmap 可以提升影片片段的轉譯效能 (當它的 xy 位置變更時)。


實作
    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 套件中包含的許多類別中已經定義了您可以使用的指定濾鏡。

您可以使用 ActionScript 程式碼在設計階段或執行階段將濾鏡套用到 Flash 編寫工具。若要使用 ActionScript 套用濾鏡,必須先為整個 filters 陣列製作一個暫存副本、修改暫存陣列,然後再將暫存陣列的值指定給 filters 陣列。 您不可以直接將新的濾鏡物件加入至 filters 陣列。

若要使用 ActionScript 加入濾鏡,請依照下列步驟執行 (假設目標顯示物件名為 myDisplayObject):

  1. 使用選定濾鏡類別的建構函式方法來建立新的濾鏡物件。
  2. myDisplayObject.filters 陣列的值指定給暫存陣列,如名為 myFilters 的陣列。
  3. 將新的濾鏡物件加入至 myFilters 暫存陣列。
  4. 將暫存陣列的值指定給 myDisplayObject.filters 陣列。

如果 filters 陣列為未定義,則不需要使用暫存陣列。 相反地,您可以直接指定陣列常值,其中包含一或多個已建立的濾鏡物件。 「範例」一節中的第一個範例會使用可以同時處理已定義與未定義之 filters 陣列的程式碼,來加入投影濾鏡。

若要修改現有的濾鏡物件,您必須使用修改 filters 陣列副本的技巧:

  1. filters 陣列的值指定給暫存陣列,如名為 myFilters 的陣列。
  2. 使用暫存陣列 myFilters 修改屬性。 例如,若要設定陣列中第一個濾鏡的 quality 屬性,可以使用下列程式碼: 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 陣列中每個索引位置的濾鏡類型。 例如,下列程式碼說明如何判斷 filters 陣列中第一個濾鏡為 DropShadowFilter 的位置:

     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  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9

會傳回 LoaderInfo 物件,其中包含關於載入此顯示物件所屬之檔案的資訊。 只有 SWF 檔案的根顯示物件,或載入的 Bitmap (並非使用 ActionScript 繪製的 Bitmap) 會定義 loaderInfo 屬性。 若要尋找與 SWF 檔案關聯,且包含名為 myDisplayObject 的顯示物件的 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 事件來呼叫 Sprite 遮色片的 startDrag() 方法,請將 Sprite 的 buttonMode 屬性設為 true

注意:您無法使用單一 mask 物件來遮罩多個呼叫的顯示物件。當此 mask 指定給第二個顯示物件時,它就會遭移除,不再成為第一個物件的遮色片,而且該物件的 mask 屬性會成為 null


實作
    public function get mask():DisplayObject
    public function set mask(value:DisplayObject):void

範例
下列程式碼會建立 TextField 物件以及 Sprite 物件 (會設定為該 TextField 物件的遮色片)。 當使用者按下文字欄位時,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  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9

指出滑鼠位置的 x 座標,以像素為單位。


實作
    public function get mouseX():Number

範例
下列程式碼會在使用者按一下 sprite 時,建立 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  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9

指出滑鼠位置的 y 座標,以像素為單位。


實作
    public function get mouseY():Number

範例
下列程式碼會在使用者按一下 sprite 時,建立 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 可以增進顯示效能。

呼叫 hitTestPoint() 方法時,如果 shapeFlag 參數設為 true,則「無法」配合不透明背景區域使用。

不透明背景區域不會回應滑鼠事件。


實作
    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  [唯讀]

語言版本: 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  [唯讀]

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9

對載入之 SWF 檔案的顯示物件而言,root 屬性就是該 SWF 檔案所呈現之顯示清單樹狀結構部分的最上層顯示物件。 以呈現出載入之影像檔的 Bitmap 物件而言,root 屬性是 Bitmap 物件本身。 以第一個載入的 SWF 檔案的主要類別實體而言,root 屬性就是顯示物件本身。 Stage 物件的 root 屬性即為 Stage 物件本身。 對於任何尚未加入顯示清單的顯示物件,root 屬性都是設為 null,除非加入的顯示物件容器已經從顯示清單中移除,但仍是載入的 SWF 檔案中最上層顯示物件的子物件。

例如,如果您藉由呼叫 Sprite() 建構函式方法來建立新的 Sprite 物件,在您將它加入顯示清單 (或者加入已從顯示清單中移除,但仍是 SWF 檔案最上層顯示物件之子物件的顯示物件容器中) 之前,它的 root 屬性一直都是 null

對於載入的 SWF 檔案而言,儘管用來載入檔案的 Loader 物件可能已不在顯示清單上,SWF 檔案中的最上層顯示物件還是為將它的 root 屬性設為自己。 除非將 Loader 物件加入做為已設定 root 屬性之顯示物件的子物件,否則 Loader 無法設定它的 root 屬性。


實作
    public function get root():DisplayObject

範例
下列程式碼將說明 root 屬性對於 Stage 物件、尚未載入 (加入至顯示清單之前及之後) 的顯示物件 (Loader 物件),以及已載入的物件 (已載入的 Bitmap 物件) 之間的差異:
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

表示 DisplayObject 實體相對於 3D 父輩容器從原始方向旋轉的 x 軸旋轉 (以度數為單位)。0 至 180 之間的數值代表順時針方向旋轉;0 至 -180 之間的數值代表逆時針方向旋轉。超過此範圍的數值會被加上或減去 360 的倍數,以獲得該範圍之內的數值。


實作
    flash10 function get rotationX():Number
    flash10 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

表示 DisplayObject 實體相對於 3D 父輩容器從原始方向旋轉的 y 軸旋轉 (以度數為單位)。0 至 180 之間的數值代表順時針方向旋轉;0 至 -180 之間的數值代表逆時針方向旋轉。超過此範圍的數值會被加上或減去 360 的倍數,以獲得該範圍之內的數值。


實作
    flash10 function get rotationY():Number
    flash10 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

表示 DisplayObject 實體相對於 3D 父輩容器從原始方向旋轉的 z 軸旋轉 (以度數為單位)。0 至 180 之間的數值代表順時針方向旋轉;0 至 -180 之間的數值代表逆時針方向旋轉。超過此範圍的數值會被加上或減去 360 的倍數,以獲得該範圍之內的數值。


實作
    flash10 function get rotationZ():Number
    flash10 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 像素寬的線條,並使用漸層加以填色。 計時器事件會呼叫 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

指出從註冊點套用的物件水平縮放 (percentage)。預設的註冊點是 (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

指出從物件註冊點套用的物件垂直縮放 (percentage)。預設的註冊點是 (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
執行階段版本: AIR 1.0, Flash Player 9

指出從物件註冊點套用的物件深度縮放 (百分比)。預設的註冊點是 (0,0)。 1.0 等於 100% 縮放。

縮放區域座標系統會變更以完整像素為單位所定義的 xyz 屬性值。


實作
    flash10 function get scaleZ():Number
    flash10 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 Rectangle 物件的 y 屬性,可以將物件向上或向下捲動。 如果顯示物件旋轉了 90° 而您向左和向右捲動它,則顯示物件實際上會向上與向下捲動。


實作
    public function get scrollRect():Rectangle
    public function set scrollRect(value:Rectangle):void

請參閱


範例
下列範例將說明 scrollRect 屬性如何定義顯示物件的捲動區域,此顯示物件名為 circle。 當您按下 circle 物件時,clicked() 事件處理常式方法會調整 y 屬性 (circle 物件的 scrollRect 屬性),使物件可以向下捲動:

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  [唯讀]

語言版本: 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

這是一個物件,具有和顯示物件的矩陣、顏色變化和像素邊界有關的屬性。 特定屬性,包括 matrix、colorTransform 以及三個唯讀屬性 (concatenatedMatrixconcatenatedColorTransformpixelBounds),將在 Transform 類別項目中說明。

每個變形物件的屬性其本身就是一個物件。 這一點很重要,因為要設定矩陣或 colorTransform 物件的新值,唯一的方式就是建立新物件並將該物件複製到 transform.matrix 或 transform.colorTransform 屬性。

例如,若要增加顯示物件矩陣的 tx 值,必須為整個矩陣物件建立副本,然後將此新物件複製到變形物件的矩陣屬性:


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

您不能直接設定 tx 屬性。 下列程式碼不會影響 myDisplayObject


    myDisplayObject.transform.matrix.tx += 10;
    

您也可以複製整個變形物件,再將它指定給另一個顯示物件的變形屬性。 例如,下列程式碼會將整個變形物件從 myOldDisplayObj 複製到 myNewDisplayObj

myNewDisplayObj.transform = myOldDisplayObj.transform;

產生的顯示物件 myNewDisplayObj 現在和原有的顯示物件 myOldDisplayObj,都具有相同的矩陣、顏色變化和像素邊界值。


實作
    public function get transform():Transform
    public function set transform(value:Transform):void

請參閱


範例
下列程式碼會設定 square Sprite 物件。 當使用者按下 Sprite,transformer() 方法會調整 colorTransformmatrix 屬性 (Sprite 的 transform 屬性):

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 物件。 每 50 毫秒,便會用 Timer 物件來變更 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

表示 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)


實作
    flash10 function get z():Number
    flash10 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;
        }
    }
}
方法詳細資訊
dynamicNewFunc1()方法
public function dynamicNewFunc1():Number

傳回值
Number
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 物件的座標系統) 的矩形。

請參閱

getDynamicZ()方法 
public function getDynamicZ():Number

傳回值
Number
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() 方法所傳回的矩形。 在這種情況下,因為這些值是當做 lineStyle() 方法的 widthjointStyle 參數傳遞,所以 triangle Sprite 會包含額外的筆畫。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() 方法。 此方法會傳回含有 xy 值,且與顯示物件原點相關 (而不是與舞台原點相關) 的新 Point 物件。

參數

point:Point — 使用 Point 類別建立的物件。 Point 物件會將 xy 座標指定為屬性。

傳回值
Point — 具有相對於顯示物件之座標的 Point 物件。

請參閱


範例

下列程式碼會建立 Shape 物件,並使用不同的點做為參數,說明呼叫 hitTestPoint() 方法的結果。 globalToLocal() 方法會將「舞台」座標的點轉換成該形狀的座標空間:

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()方法 
flash10 function globalToLocal3D(point:Point):Vector3D

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10

將二維點從「舞台」(全域) 座標轉換為三維顯示物件的 (區域) 座標。

若要使用此方法,請先建立 Point 類別的實體。 您指定給 Point 物件的 x 與 y 值是相對於主要顯示區域的原點 (0,0),所以代表全域座標。接著,將 Point 物件當做 point 參數傳遞至 globalToLocal3D() 方法。此方法會傳回三維座標,做為包含相對於三維顯示物件原點之 xyz 值的 Vector3D 物件。

參數

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)); // true
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() 方法會將「舞台」座標的點轉換成該形狀的座標空間:

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()方法 
flash10 function local3DToGlobal(point3d:Vector3D):Point

語言版本: ActionScript 3.0
執行階段版本: Flash Player 10

將三維顯示物件的 (區域) 座標的三維點轉換為「舞台」(全域) 座標中的二維點。

例如,只能使用二維座標 (x,y) 來搭配 display.Graphics 方法繪圖。若要繪製三維物件,您必須將顯示物件的三維座標對應至二維座標。首先,建立 Vector3D 類別的實體,以保存三維顯示物件的 x、y 和 z 座標。接著,將 Vector3D 物件當做 point3d 參數傳遞至 local3DToGlobal() 方法。此方法會傳回可搭配 Graphics API 使用的二維 Point 物件,以繪製三維物件。

參數

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() 方法。 此方法會傳回含有 xy 值,且與舞台原點相關 (而不是與顯示物件原點相關) 的新 Point 物件。

參數

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));
}
newFunc1()方法 
public function newFunc1():Number

傳回值
Number
newFunc2()方法 
public function newFunc2():Number

傳回值
Number
事件詳細資訊
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 屬性值。

這個事件具有下列屬性:

屬性
bubblestrue
cancelablefalse;沒有要取消的預設行為指令。
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 屬性值。

這個事件具有下列屬性:

屬性
bubblesfalse
cancelablefalse;沒有要取消的預設行為指令。
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 屬性值。

注意:這個事件沒有「捕捉階段」也沒有「反昇階段」,這表示事件偵聽程式必須直接加入至任何可能的目標,不論目標是否在顯示清單上。

這個事件具有下列屬性:

屬性
bubblesfalse
cancelablefalse;沒有要取消的預設行為指令。
currentTarget以事件偵聽程式主動處理 Event 物件的物件。
target具有註冊為 ENTER_FRAME 事件之偵聽程式的任何 DisplayObject 實體。
exitFrame 事件  
事件物件類型: flash.events.Event
屬性 Event.type = flash.events.Event.EXIT_FRAME

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9

[廣播事件] 當播放磁頭結束目前影格時傳送。所有的影格 Script 已經執行。如果播放磁頭沒有移動,或者只有一個影格,此事件會以影格速率不斷地傳送。 這是廣播事件,表示所有具有針對此事件註冊之偵聽程式的顯示物件都會加以傳送。

定義 exitFrame 事件物件的 type 屬性值。

注意:這個事件沒有「捕捉階段」也沒有「反昇階段」,這表示事件偵聽程式必須直接加入至任何可能的目標,不論目標是否在顯示清單上。

這個事件具有下列屬性:

屬性
bubblesfalse
cancelablefalse;沒有要取消的預設行為指令。
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

[廣播事件] 在影格顯示物件的建構函式執行之後,且影格 Script 執行之前傳送。如果播放磁頭沒有移動,或者只有一個影格,此事件會以影格速率不斷地傳送。 這是廣播事件,表示所有具有針對此事件註冊之偵聽程式的顯示物件都會加以傳送。

定義 frameConstructed 事件物件的 type 屬性值。

注意:這個事件沒有「捕捉階段」也沒有「反昇階段」,這表示事件偵聽程式必須直接加入至任何可能的目標,不論目標是否在顯示清單上。

這個事件具有下列屬性:

屬性
bubblesfalse
cancelablefalse;沒有要取消的預設行為指令。
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 屬性值。

這個事件具有下列屬性:

屬性
bubblestrue
cancelablefalse;沒有要取消的預設行為指令。
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 屬性值。

這個事件具有下列屬性:

屬性
bubblesfalse
cancelablefalse;沒有要取消的預設行為指令。
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

[廣播事件] 當顯示清單將要更新和顯示時傳送。此事件會在呈現顯示清單之前,為偵聽此事件的物件提供最後一次變更的機會。 Flash Player 會將顯示清單呈現為預設的行為。 每次當您需要 Flash Player 傳送 render 事件時,就必須呼叫 Stage 物件的 invalidate() 方法。 只有在某個物件與呼叫 Stage.invalidate() 的物件之間存在相互信任時,Render 事件才會傳送至該物件。這是廣播事件,表示所有具有針對此事件註冊之偵聽程式的顯示物件都會加以傳送。

注意:如果 Flash Player 視窗沒有顯示出來,就不會傳送此事件, 例如,Flash Player 視窗最小化或被遮住的時候。

Event.RENDER 常數會定義 render 事件物件的 type 屬性值。

注意:這個事件沒有「捕捉階段」也沒有「反昇階段」,這表示事件偵聽程式必須直接加入至任何可能的目標,不論目標是否在顯示清單上。

這個事件具有下列屬性:

屬性
bubblesfalse
cancelablefalse;無法取消預設的行為指令。
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);
    }
}