顯示物件 DisplayObject
與顯示物件容器 DisplayObjectContainer
- 顯示物件 (
DisplayObject
)
- 指可在畫面上顯示內容的物件。所有的顯示物件類別都是
DisplayObject
類別的子類別,也就是 DisplayObject
類別是顯示物件的最上層類別 (基底類別 base class) 。
- 顯示清單 (Display Lists)
- 由畫面上可顯示的物件所組成的樹狀階層結構。「舞台」 (
Stage
) 是顯示清單的根 (最外層 / 最高階),而加入「舞台」或是其子系的所有顯示物件,就形成顯示清單,物件須加入顯示清單,才能真正顯示在畫面。
- 顯示物件容器 (
DisplayObjectContainer
)
- 可作為容器一般,通常用來包含子顯示物件,屬於特殊類型的顯示物件。舞台 (
Stage
) 算是典型的 DisplayObjectContainer
物件。
DisplayObject
家族 - 核心 DisplayObject classes
- DisplayObject
- StaticText
- Shape
- MorphShape
- Bitmap
- Video
- AVM1Movie
- InteractiveObject
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 透視空間為新座標, x
和 y
座標當然是重新計算。要指出物件的屬性 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
物件的 x
或 y
屬性值,讓物件像似在矩形區域內捲動出來。 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);
//將 pt
於 dis
物件的座標算出舞台的座標。
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
物件。