顯示物件 DisplayObject 與顯示物件容器 DisplayObjectContainer

顯示物件 (DisplayObject)
指可在畫面上顯示內容的物件。所有的顯示物件類別都是 DisplayObject 類別的子類別,也就是 DisplayObject 類別是顯示物件的最上層類別 (基底類別 base class) 。
顯示清單 (Display Lists)
由畫面上可顯示的物件所組成的樹狀階層結構。「舞台」 (Stage) 是顯示清單的根 (最外層 / 最高階),而加入「舞台」或是其子系的所有顯示物件,就形成顯示清單,物件須加入顯示清單,才能真正顯示在畫面。
顯示物件容器 (DisplayObjectContainer)
可作為容器一般,通常用來包含子顯示物件,屬於特殊類型的顯示物件。舞台 (Stage) 算是典型的 DisplayObjectContainer 物件。

DisplayObject 家族 - 核心 DisplayObject classes

DisplayObject 類別與物件 - flash.display 套件

DisplayObject 的屬性與方法

DisplayObject 繼承 EventDispatcher
[屬性]
x
  • 物件相對於父輩物件 (容器) 區域的 x 軸座標,以物件註冊點為基準,父物件的左上角座標為 (0,0) 。
  • x:Number [讀寫]
  • dis.x=50 //定義 dis 物件的 x 座標為 50 px 。
y
  • 物件相對於父輩物件 (容器) 區域的 y 軸座標,以物件註冊點為基準,父物件的左上角座標為 (0,0) 。
  • y:Number [讀寫]
  • dis.y=50 //定義 dis 物件的 y 座標為 50 px 。
z
  • 物件相對於 3D 父輩物件 (容器) 空間的 z 軸座標。數值越大像似距離螢幕越遠,以父物件 3D 透視空間為新座標, xy 座標當然是重新計算。要指出物件的屬性 transform 物件的屬性 matrix3D 物件,應先指定具體的 z 值 。
  • z:Number [讀寫]。
  • dis.z=50 //定義 dis 物件的 z 座標為 50 。
rotation
  • 物件旋轉角度。 0 至 180 之間的數值順時針方向旋轉;0 至 -180 之間的數值逆時針方向旋轉;超過此範圍的值會自動被減去或加上 360 的倍數來計算。
  • rotation:Number [讀寫]
  • dis.rotation=-30 //定義 dis 物件逆時針旋轉 30 度。
rotationX
  • 物件相對於 3D 父輩物件 (容器) 空間 x 軸的旋轉角度。
  • rotationX:Number [讀寫]
  • dis.rotationX=30 //定義 dis 物件依 x 軸順時針旋轉 30 度。
rotationY
  • 物件相對於 3D 父輩物件 (容器) 空間 y 軸的旋轉角度。
  • rotationY:Number [讀寫]
  • dis.rotationY=30 //定義 dis 物件依 y 軸順時針旋轉 30 度。
rotationZ
  • 物件相對於 3D 父輩物件 (容器) 空間 z 軸的旋轉角度。
  • rotationZ:Number [讀寫]
  • dis.rotationZ=30 //定義 dis 物件依 z 軸順時針旋轉 30 度。
scaleX
  • 物件水平縮放的倍數,以物件註冊點為基準。
  • scaleX:Number [讀寫]
  • dis.scaleX=1.2 //定義 dis 物件水平縮放 120% 。
scaleY
  • 物件垂直縮放的倍數,以物件註冊點為基準。
  • scaleY:Number [讀寫]
  • dis.scaleY=0.8 //定義 dis 物件垂直縮放 80% 。
scaleZ
  • 物件深度縮放的倍數,以物件註冊點為基準。
  • scaleZ:Number [讀寫]
  • dis.scaleZ=0.5 //定義 dis 物件深度縮放 50% ,視覺上有遠離效果。
alpha
  • 物件的透明度。以 0 (完全透明) 到 1 (完全不透明) 的數值表示。
  • alpha:Number [讀寫] ,預設值 1 。
  • dis.alpha=0.75 //定義 dis 物件透明度 75% 。
height
  • 物件的高度,以像素計算。初始高度一般就是物件的內容的總範圍,無內容物件的高度自動強制為 0 。
  • height:Number [讀寫]
  • dis.height=250 // dis 物件高度改變為 250 像素。
width
  • 物件的寬度,以像素計算。初始寬度一般就是物件的內容的總範圍,無內容物件的寬度自動強制為 0 。
  • width:Number [讀寫]
  • dis.width=250 // dis 物件寬度改變為 250 像素。
visible
  • 指出物件是否顯示。不顯示的物件會失去互動功能。
  • visible:Boolean [讀寫] ,預設值為 true 。
  • dis.visible=false //定義 dis 物件不顯示。
stage
  • 取得物件所在的舞台物件。物件須加入顯示清單才會有舞台。
  • stage:Stage [唯讀]
  • dis.x=dis.stage.stageWidth/2 // dis 物件的 x 座標為舞台寬度的一半。
root
  • 取得顯示清單結構的最上層物件。
  • root:DisplayObject [唯讀]
  • dis.root.x=20 //指定 dis 物件的根物件的 x 座標 20 px 。
parent
  • 取得包含此物件的父物件容器。
  • parent:DisplayObjectContainer [唯讀]
  • this.parent.parent.alpha=0.8 //指定目前物件的上兩層物件的透明度為 80%。
mask
  • 指出物件的遮色片物件,依據 mask 物件的透明度遮蔽物件 (支援半透明遮蔽) 。 mask 物件須加入顯示清單才有效果,一個 mask 物件只能對應一個顯示物件有效。
  • mask:DisplayObject [讀寫]
  • dis.mask=mk //指定 mk 物件作為 dis 物件的遮色片。
name
  • 指出實體的名稱,同一層級裡允許兩個物件有相同的名稱,官方文件沒有明確禁止。
  • name:String [讀寫]
  • dis.name="plane" //指定 dis 物件的名稱為 plane
mouseX
  • 取得滑鼠在物件中的 x 軸座標,單位為像素。
  • mouseX:Number [唯讀]
  • dis.x=dis.stage.mouseX //以滑鼠在舞台的 x 座標作為 dis 物件的 x 座標。
mouseY
  • 取得滑鼠在物件中的 y 軸座標,單位為像素。
  • mouseY:Number [唯讀]
  • dis.y=dis.stage.mouseY //以滑鼠在舞台的 y 座標作為 dis 物件的 y 座標。
scale9Grid
  • 指出物件九宮格縮放模式所依據的 Rectangle 物件。 Rectangle 物件所定義的矩形區域,會將物件劃分為九宮格來縮放變形,這會保持四個角 (如圓角) 不會因縮放而扭曲。
  • scale9Grid:Rectangle [讀寫]
  • dis.scale9Grid=rect // dis 物件依據 rect 物件定義的矩形區域做縮放。
scrollRect
  • 指出物件的矩形顯示區域,以 Rectangle 物件表示矩形範圍,像加了矩形的遮色片。物件只會在指定區域內顯示,超出的部分可由指定 Rectangle 物件的 xy 屬性值,讓物件像似在矩形區域內捲動出來。
  • scrollRect:Rectangle [讀寫]
  • dis.scrollRect=rect; // dis 物件裁剪至 rect 物件的矩形範圍內顯示。
[方法]
getBounds()
  • 取得表示物件四周區域的矩形,以 Rectangle 物件的位置及寬高表示,位置是由 targetCoordinateSpace 參數指定的物件作為座標參照。
  • public function getBounds(targetCoordinateSpace:DisplayObject):Rectangle
  • dis.getBounds(stage); // 取得 dis 物件相對於舞台的矩形區域座標。
getRect()
  • 取得表示物件四周區域的矩形,但是不包含越出路徑的筆畫,以 Rectangle 物件的位置及寬高表示,位置是由 targetCoordinateSpace 參數指定的物件作為座標參照。
  • public function getRect(targetCoordinateSpace:DisplayObject):Rectangle
  • dis.getRect(stage); // 取得 dis 物件相對於舞台的矩形區域座標,但排除越出路徑的筆畫。
hitTestObject()
  • 判斷物件的矩形範圍是否與參數 obj 物件的矩形範圍相交 (重疊) 。
  • public function hitTestObject(obj:DisplayObject):Boolean
  • if(dis.hitTestObject(target)){/*do something*/}; // 判斷 dis 物件是否與 target 物件的矩形範圍重疊。
hitTestPoint()
  • 判斷物件是否與參數 x, y 指定的座標點相交 (重疊) 。 x, y 的座標空間為舞台。
  • public function hitTestPoint(x:Number,y:Number,shapeFlag:Boolean=false):Boolean
    • shapeFlag : 預設值為 false ,以物件矩形範圍作為重疊判斷; true 以物件實際輪廓 (不一定是矩形) 作為判斷。
  • if(dis.hitTestPoint(100,0,true)){/*do something*/}; // 判斷 dis 物件實際輪廓是否有涵蓋座標點 (100,0) 。
localToGlobal()
  • 將參數 point 指定的座標點,由相對於顯示物件 (呼叫此方法) 換算出相對於舞台的座標位置。
  • public function localToGlobal(point:Point):Point
  • dis.localToGlobal(pt); //將 ptdis 物件的座標算出舞台的座標。
globalToLocal()
  • 將參數 point 指定的座標點,由相對於舞台換算出相對於顯示物件 (呼叫此方法) 的座標位置。
  • public function globalToLocal(point:Point):Point
  • dis.globalToLocal(pt); //將 pt 於舞台的座標換算出 dis 物件的座標。

InteractiveObject 類別與物件 - flash.display 套件

InteractiveObject 的屬性與方法

InteractiveObject 繼承 DisplayObject
[屬性]
mouseEnabled
  • 指出物件是否接受使用者滑鼠操作或鍵盤輸入。指定不接受時,物件就不能成為事件目標。此定義不會影響物件的子系物件。
  • mouseEnabled:Boolean [讀寫],預設值為 true
  • ia.mouseEnabled=false //指定 ia 物件不接受使用者滑鼠操作及鍵盤輸入。

DisplayObjectContainer 類別與物件 - flash.display 套件

DisplayObjectContainer 的屬性與方法

DisplayObjectContainer 繼承 InteractiveObject
[屬性]
numChildren
  • 取得物件內的子 (系) 物件數量。
  • numChildren:int [唯讀]
  • n=con.numChildren // con 物件的子物件數量指定給 n 物件。
mouseChildren
  • 指出物件的所有子系物件是否接受使用者滑鼠操作或鍵盤輸入。指定不接受時,子系物件都不能為事件目標。
  • mouseChildren:Boolean [讀寫],預設值為 true
  • dis.mouseChildren=false //指定 con 物件的子系物件不接受使用者滑鼠操作或鍵盤輸入。
[方法]
addChild()
  • 將實體 (參數 child) 加入物件內,成為顯示清單中此物件的子物件,新加入的子物件會在父物件中的最前面 (上方) 。同一個實體當然只能在清單中出現一次,因此,也可用來將一個子物件轉到不同的父物件容器。
  • public function addChild(child:DisplayObject):DisplayObject
  • con.addChild(tf) // con 容器物件內加入 tf (實體) 作為子物件。
addChildAt()
  • 將實體 (參數 child) 加入物件內,成為顯示清單中此物件的子物件,並可指定以 0 為起始的索引數字 (參數 index) 表示前後位置,數值愈大代表愈前面 (上方) 。
  • public function addChildAt(child:DisplayObject, index:int):DisplayObject
  • con.addChildAt(tf,0) // con 容器物件內加入 tf (實體) 作為子物件,並位在最後面。
removeChild()
  • 將子物件實體 (參數 child) 從顯示清單移走,不再是該物件的子物件。注意,實體仍存在,並非被刪除,而只是不在顯示清單內。
  • public function removeChild(child:DisplayObject):DisplayObject
  • con.removeChild(tf) // 移走 con 容器物件內 tf 子物件。
removeChildAt()
  • 將指定索引數字 (參數 index) 的子物件實體 (參數 child) 從顯示清單移走,不再是該物件的子物件。注意,實體仍存在,並非被刪除,而只是不在顯示清單內。
  • public function removeChildAt(index:int):DisplayObject
  • con.removeChildAt(0) // 移走 con 容器物件內位置為 0 的子物件。
getChildAt()
  • 取得指定索引數字 (參數 index) 的子物件實體。
  • public function getChildAt(index:int):DisplayObject
  • con.getChildAt(0).alpah=0.5 // 將 con 容器物件內位置為 0 的子物件透明度定為 0.5 。
getChildByName()
  • 取得已有指定 name 屬性名稱 (參數 name) 的子物件實體。此方式執行速度會較 getChildAt() 來得慢。
  • public function getChildByName(name:String):DisplayObject
  • tf.name="mail";con.getChildByName("mail").alpha=0.5 // 將 con 容器物件內名稱為 mail 的子物件透明度定為 0.5 。
getChildIndex()
  • 取得子物件實體 (參數 child) 的索引數字 (位置) 。
  • public function getChildIndex(child:DisplayObject):int
  • var i:int=con.getChildIndex(tf) // 將 con 容器物件內 tf 子物件的索引位置指定給 i 物件。
setChildIndex()
  • 設定子物件 (參數 child) 的索引數字 (參數 index) 。
  • public function setChildIndex(child:DisplayObject, index:int):void
  • con.setChildIndex(tf,con.numChildren-1) // 將 con 容器物件內 tf 子物件的索引位置改為最前面 (子物件總數 - 1) 。
swapChildren()
  • 互換二個子物件 (參數 child1, child2) 的索引數字。
  • public function swapChildren(child1:DisplayObject, child2:DisplayObject):void
  • con.swapChildren(c1,c2) // 將 con 容器物件內 c1 及 c2 子物件的索引位置互換。
swapChildrenAt()
  • 依據二個索引數字 (參數 index1, index2) 互換子物件位置。
  • public function swapChildrenAt(index1:int, index2:int):void
  • con.swapChildrenAt(0,2) // 將 con 容器物件內索引數字為 0 及 2 的子物件互換位置。
contains()
  • 判斷容器物件是否包含參數 child 子物件 (包括顯示清單所有後代) ;參數也可為容器物件本身,不過不論有否加入顯示清單,結果均為 true (這點有點讓人匪夷所思?) 。
  • public function contains(child:DisplayObject):Boolean
  • if(con.contains(cd)){/*do something*/} // 判斷 con 容器物件內是否有 cd 子系物件已加入顯示清單。
getObjectsUnderPoint()
  • 取得容器物件內有涵蓋到參數 point 座標點的子系物件 (所有後代) 陣列。
  • public function getObjectsUnderPoint(point:Point):Array
  • var onPt:Array=con.getObjectsUnderPoint(pt); // 取得 con 容器物件內有涵蓋到 pt 座標點的子系物件陣列,並指定給 onPt 物件。