套件 | flash.display |
類別 | public class DisplayObjectContainer |
繼承 | DisplayObjectContainer InteractiveObject DisplayObject EventDispatcher Object |
子類別 | Loader, Sprite, Stage, TextLine |
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
DisplayObject 是抽象的基底類別,因此,您無法直接呼叫 DisplayObject。 叫用 new DisplayObject()
會擲出 ArgumentError
例外。
new DisplayObjectContainer()
建構函式會擲出 ArgumentError
例外。
如需詳細資訊,請參閱「ActionScript 3.0 開發人員指南」中的「顯示程式設計」一章。
相關 API 元素
屬性 | 定義自 | ||
---|---|---|---|
accessibilityImplementation : AccessibilityImplementation
對此 InteractiveObject 實體目前的輔助功能實作 (AccessibilityImplementation)。 | InteractiveObject | ||
accessibilityProperties : AccessibilityProperties
此顯示物件的目前輔助功能選項。 | DisplayObject | ||
alpha : Number
指出所指定物件的 Alpha 透明度值。 | DisplayObject | ||
blendMode : String
來自 BlendMode 類別的值,會指定要使用何種混合模式。 | DisplayObject | ||
blendShader : Shader [唯寫]
設定用來混合前景和背景的著色器。 | DisplayObject | ||
cacheAsBitmap : Boolean
如果設定為 true,Flash 執行階段會快取顯示物件的內部點陣圖表示法。 | DisplayObject | ||
cacheAsBitmapMatrix : Matrix
如果為非 null,當 cacheAsBitmap 設定為 true 時,這個 Matrix 物件會定義顯示物件的顯示方法。 | DisplayObject | ||
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
contextMenu : NativeMenu
指定與此物件有關聯的快顯選單。 | InteractiveObject | ||
doubleClickEnabled : Boolean
會指定物件是否會收到 doubleClick 事件。 | InteractiveObject | ||
filters : Array
索引的陣列,其中包含目前和顯示物件相關的每個濾鏡物件。 | DisplayObject | ||
focusRect : Object
會指定這個物件是否會顯示焦點矩形。 | InteractiveObject | ||
height : Number
會指出顯示物件的高度,以像素為單位。 | DisplayObject | ||
loaderInfo : LoaderInfo [唯讀]
會傳回 LoaderInfo 物件,其中包含關於載入此顯示物件所屬之檔案的資訊。 | DisplayObject | ||
mask : DisplayObject
呼叫之顯示物件會以指定的 mask 物件遮蓋。 | DisplayObject | ||
metaData : Object
如果中繼資料是透過 PlaceObject4 標籤與 SWF 檔案中的這個 DisplayObject 實體一同儲存,則會取得 DisplayObject 實體的中繼資料物件。 | DisplayObject | ||
mouseChildren : Boolean
判斷物件的子系是否支援啟用滑鼠或使用者輸入裝置。 | DisplayObjectContainer | ||
mouseEnabled : Boolean
指定此物件是否接收滑鼠或其他使用者輸入及訊息。 | InteractiveObject | ||
mouseX : Number [唯讀]
指出滑鼠或使用者輸入裝置位置的 x 座標,以像素為單位。 | DisplayObject | ||
mouseY : Number [唯讀]
指出滑鼠或使用者輸入裝置位置的 y 座標,以像素為單位。 | DisplayObject | ||
name : String
指出 DisplayObject 的實體名稱。 | DisplayObject | ||
needsSoftKeyboard : Boolean
指定虛擬鍵盤 (螢幕上的軟體鍵盤) 是否應在此 InteractiveObject 實體接收到焦點時顯示。 | InteractiveObject | ||
numChildren : int [唯讀]
傳回此物件的子系數量。 | DisplayObjectContainer | ||
opaqueBackground : Object
會指定顯示物件是否不透明,並具有特定背景顏色。 | DisplayObject | ||
parent : DisplayObjectContainer [唯讀]
指出包含此顯示物件的 DisplayObjectContainer 物件。 | DisplayObject | ||
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
指出從註冊點套用的物件水平縮放 (百分比)。 | DisplayObject | ||
scaleY : Number
指出從物件註冊點套用的物件垂直縮放 (百分比)。 | DisplayObject | ||
scaleZ : Number
指出從物件註冊點套用的物件深度縮放 (百分比)。 | DisplayObject | ||
scrollRect : Rectangle
顯示物件的捲動矩形範圍。 | DisplayObject | ||
softKeyboard : String
控制軟體鍵盤的外觀。 | InteractiveObject | ||
softKeyboardInputAreaOfInterest : Rectangle
定義顯示軟體鍵盤時,應保留於螢幕上的區域 (iOS 未提供)。 | InteractiveObject | ||
stage : Stage [唯讀]
顯示物件的「舞台」。 | DisplayObject | ||
tabChildren : Boolean
判斷物件的子系是否支援啟用定位鍵。 | DisplayObjectContainer | ||
tabEnabled : Boolean
會指定這個物件是否在停駐點順序中。 | InteractiveObject | ||
tabIndex : int
會指定 SWF 檔中的物件停駐點順序。 | InteractiveObject | ||
textSnapshot : flash.text:TextSnapshot [唯讀]
傳回此 DisplayObjectContainer 實體的 TextSnapshot 物件。 | DisplayObjectContainer | ||
transform : flash.geom: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 |
方法 | 定義自 | ||
---|---|---|---|
呼叫 new DisplayObjectContainer() 建構函式會擲回 ArgumentError 例外。 | DisplayObjectContainer | ||
將 DisplayObject 子實體加入至此 DisplayObjectContainer 實體。 | DisplayObjectContainer | ||
將 DisplayObject 子實體加入至此 DisplayObjectContainer 實體。 | DisplayObjectContainer | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。 | EventDispatcher | ||
指出安全性限制是否會造成傳回的清單 (可用指定的 point 點呼叫 DisplayObjectContainer.getObjectsUnderPoint() 方法來取得) 省略任何顯示物件。 | DisplayObjectContainer | ||
判斷指定的顯示物件是否為 DisplayObjectContainer 實體的子系,或為實體本身。 | DisplayObjectContainer | ||
會將事件傳送到事件流程。 | EventDispatcher | ||
傳回可定義顯示物件區域 (相對於 targetCoordinateSpace 物件的座標系統) 的矩形。 | DisplayObject | ||
傳回存在於指定索引位置的子顯示物件實體。 | DisplayObjectContainer | ||
傳回具有指定名稱的子顯示物件。 | DisplayObjectContainer | ||
傳回 child DisplayObject 實體的索引位置。 | DisplayObjectContainer | ||
傳回位於指定點底下,且屬於此 DisplayObjectContainer 實體之子系 (或孫系,以下類推) 的物件陣列。 | DisplayObjectContainer | ||
根據 targetCoordinateSpace 參數所定義的座標系統,並排除形狀上的任何筆畫,傳回可定義顯示物件邊界的矩形。 | DisplayObject | ||
將 point 物件從「舞台」(全域) 座標轉換成顯示物件的 (區域) 座標。 | DisplayObject | ||
將二維點從「舞台」(全域) 座標轉換為三維顯示物件的 (區域) 座標。 | DisplayObject | ||
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。 | EventDispatcher | ||
指出物件是否有已定義的指定屬性。 | Object | ||
評估顯示物件的範圍框,看它是否與 obj 顯示物件的範圍框重疊或相交。 | DisplayObject | ||
評估顯示物件,看它是否與 x 和 y 參數所指定的點重疊或相交。 | DisplayObject | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
將三維顯示物件的 (區域) 座標的三維點轉換為「舞台」(全域) 座標中的二維點。 | DisplayObject | ||
將 point 物件從顯示物件的 (區域) 座標轉換成「舞台」(全域) 座標。 | DisplayObject | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
將指定的 child DisplayObject 實體從 DisplayObjectContainer 實體的子清單中移除。 | DisplayObjectContainer | ||
從 DisplayObjectContainer 子清單中的指定索引位置移除子 DisplayObject。 | DisplayObjectContainer | ||
將所有 child DisplayObject 實體從 DisplayObjectContainer 實體的子清單中移除。 | DisplayObjectContainer | ||
會從 EventDispatcher 物件移除偵聽程式。 | EventDispatcher | ||
升起顯示虛擬鍵盤。 | InteractiveObject | ||
變更顯示物件容器中現有子系的位置。 | DisplayObjectContainer | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
遞迴停止執行所有 MovieClips 的時間軸根源於此物件。 | DisplayObjectContainer | ||
替換兩個指定子物件的 z 順序 (深度階層,由前至後順序)。 | DisplayObjectContainer | ||
在子清單的兩個指定索引位置,替換子物件的 z 順序 (深度階層,由前至後順序)。 | DisplayObjectContainer | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object | ||
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。 | EventDispatcher |
mouseChildren | 屬性 |
mouseChildren:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
判斷物件的子系是否支援啟用滑鼠或使用者輸入裝置。如果啟用某個物件,則使用者可以使用滑鼠或使用者輸入裝置,與其進行互動。預設值為 true
。
當您使用 Sprite 類別 (而不是使用 SimpleButton 類別) 來建立按鈕時,這個方法就會很有用。 當您使用 Sprite 實體來建立按鈕時,可以選擇使用 addChild()
方法加入額外的 Sprite 實體來裝飾按鈕。 此程序可能會造成未預期的滑鼠事件行為,因為當做子系加入的 Sprite 實體可能會在您預期父輩實體將成為目標物件時,成為滑鼠事件的目標物件。 為了確保父輩實體能夠當作滑鼠事件的目標物件來運作,可以將父輩實體的 mouseChildren
屬性設為 false
。
設定這個屬性不會傳送任何事件。 您必須使用 addEventListener()
方法來建立互動式功能。
實作
public function get mouseChildren():Boolean
public function set mouseChildren(value:Boolean):void
相關 API 元素
範例 ( 如何使用本範例 )
container
的 Sprite 物件 (一種顯示物件容器類型),然後在您將其 mouseChildren
屬性設為 false
時顯示此物件,此時 mouseClick
事件的目標將是 container
物件,而不是其子物件當中的任何一個:
import flash.display.Sprite; import flash.events.MouseEvent; var container:Sprite = new Sprite(); container.name = "container"; addChild(container); var circle:Sprite = new Sprite(); circle.name = "circle"; circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(40, 40, 40); container.addChild(circle); container.mouseChildren = false; container.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void { trace(event.target.name); // container }
numChildren | 屬性 |
numChildren:int
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
傳回此物件的子系數量。
實作
public function get numChildren():int
範例 ( 如何使用本範例 )
container1
和 container2
。 Sprite 是一種顯示物件容器類型。 此範例會呼叫 addChild()
方法來設定顯示階層: container1
是 container2
的子系,而其它兩個顯示物件 circle1
和 circle2
是 container1
的子系。 trace()
方法的呼叫會顯示每個物件的子系數目。 請注意,孫系並不會包含在 numChildren
的計數中:
import flash.display.Sprite; var container1:Sprite = new Sprite(); var container2:Sprite = new Sprite(); var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFFCC00); circle1.graphics.drawCircle(40, 40, 40); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0x00CCFF); circle2.graphics.drawCircle(80, 40, 40); container2.addChild(container1); container1.addChild(circle1); container1.addChild(circle2); trace(container1.numChildren); // 2 trace(container2.numChildren); // 1 trace(circle1.numChildren); // 0 trace(circle2.numChildren); // 0
tabChildren | 屬性 |
tabChildren:Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
判斷物件的子系是否支援啟用定位鍵。 啟用或停用物件子系的定位鍵。 預設值為 true
。
注意:請勿將 tabChildren
屬性與 Flex 一起使用。請改為使用 mx.core.UIComponent.hasFocusableChildren
屬性。
實作
public function get tabChildren():Boolean
public function set tabChildren(value:Boolean):void
擲回值
IllegalOperationError — 呼叫這個 Stage 物件屬性會擲回例外。 Stage 物件無法實作這個屬性。
|
範例 ( 如何使用本範例 )
container1
顯示物件容器,並將 circle1
和 circle2
兩個顯示物件加入至此容器的子清單中。 這個範例會將 tabChildren 設定為 false
,讓子系可以藉由使用 tabIndex
管理自己擁有的定位停駐點順序:
import flash.display.Sprite; var container:Sprite = new Sprite(); container.tabChildren = false; var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFFCC00); circle1.graphics.drawCircle(40, 40, 40); circle1.tabIndex = 1; var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0x00CCFF); circle2.graphics.drawCircle(120, 40, 40); circle2.tabIndex = 0; container.addChild(circle1); container.addChild(circle2);
textSnapshot | 屬性 |
textSnapshot:flash.text:TextSnapshot
[唯讀] 語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9 |
傳回此 DisplayObjectContainer 實體的 TextSnapshot 物件。
實作
public function get textSnapshot():flash.text:TextSnapshot
相關 API 元素
範例 ( 如何使用本範例 )
trace(this.textSnapshot.getText(0, this.textSnapshot.charCount));
DisplayObjectContainer | () | 建構函式 |
public function DisplayObjectContainer()
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
呼叫 new DisplayObjectContainer()
建構函式會擲出 ArgumentError
例外。 然而,您「可以」呼叫下列 DisplayObjectContainer 之子類別的建構函式:
new Loader()
new Sprite()
new MovieClip()
addChild | () | 方法 |
public function addChild(child:DisplayObject):DisplayObject
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
將 DisplayObject 子實體加入至此 DisplayObjectContainer 實體。 此子系會加入到此 DisplayObjectContainer 實體中所有其它子系的前面 (上層)。(若要將子系加入至特定的索引位置,請使用 addChildAt()
方法)。
如果您加入一個已經包含不同顯示物件容器的子物件做為父物件,則物件會從其它顯示物件容器的子清單中移除。
注意:命令 stage.addChild()
會導致發佈的 SWF 檔案發生問題,包括安全性問題以及與其他載入 SWF 檔案的衝突。無論您載入多少 SWF 檔案到執行階段中 ,Flash 執行階段實體中只會有一個舞台。因此,在一般情況下不該將物件直接新增至舞台。舞台唯一該包含的物件就是根物件。建立一個 DisplayObjectContainer 來包含顯示清單中的所有項目。然後,視需要將 DisplayObjectContainer 新增至舞台。
參數
child:DisplayObject — 要新增做為此 DisplayObjectContainer 實體子系的 DisplayObject 實體。
|
DisplayObject — 您傳遞至 child 參數的 DisplayObject 實體。
|
事件
added: — 當顯示物件加入顯示清單中時傳送。
|
擲回值
ArgumentError — 如果子系與父輩相同的話,則擲出例外。 如果呼叫者為所加入之子系的子系 (或孫系,依此類推), 也會擲回例外。
|
相關 API 元素
範例 ( 如何使用本範例 )
container1
和 container2
。 Sprite 是一種顯示物件容器類型。 此範例會呼叫 addChild()
方法來設定顯示階層: container1
是 container2
的子系,而其它兩個顯示物件 circle1
和 circle2
是 container1
的子系。 trace()
方法的呼叫會顯示每個物件的子系數目。 請注意,孫系並不會包含在 numChildren
的計數中:
import flash.display.Sprite; var container1:Sprite = new Sprite(); var container2:Sprite = new Sprite(); var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFFCC00); circle1.graphics.drawCircle(40, 40, 40); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0x00CCFF); circle2.graphics.drawCircle(80, 40, 40); container2.addChild(container1); container1.addChild(circle1); container1.addChild(circle2); trace(container1.numChildren); // 2 trace(container2.numChildren); // 1 trace(circle1.numChildren); // 0 trace(circle2.numChildren); // 0
addChildAt | () | 方法 |
public function addChildAt(child:DisplayObject, index:int):DisplayObject
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
將 DisplayObject 子實體加入至此 DisplayObjectContainer 實體。 子系會加入至指定的索引位置。 0 的索引代表位於此 DisplayObjectContainer 物件的顯示清單後面 (下層)。
例如,下列範例將說明三個加上 a、b 與 c 標籤的顯示物件,分別位於 0、2 與 1 的索引位置:
如果您加入一個已經包含不同顯示物件容器的子物件做為父物件,則物件會從其它顯示物件容器的子清單中移除。
參數
child:DisplayObject — 要新增做為此 DisplayObjectContainer 實體子系的 DisplayObject 實體。
| |
index:int — 子實體加入所在的索引位置。 如果您指定一個目前已佔用的索引位置,則存在該位置與所有更上層位置的子物件都會由原本的子清單位置往上移動一個位置。
|
DisplayObject — 您傳遞至 child 參數的 DisplayObject 實體。
|
事件
added: — 當顯示物件加入顯示清單中時傳送。
|
擲回值
RangeError — 如果子清單中不存在索引位置,則擲回例外。
| |
ArgumentError — 如果子系與父輩相同的話,則擲出例外。 如果呼叫者為所加入之子系的子系 (或孫系,依此類推), 也會擲回例外。
|
相關 API 元素
範例 ( 如何使用本範例 )
container
顯示物件容器,並將 circle1
顯示物件加入至此容器的顯示清單中。 接著,藉由呼叫 container.addChildAt(circle2, 0)
將 circle2
物件加入索引位置 0 (下層),再將 circle1
物件移至索引位置 1:
import flash.display.Sprite; var container:Sprite = new Sprite(); var circle1:Sprite = new Sprite(); var circle2:Sprite = new Sprite(); container.addChild(circle1); container.addChildAt(circle2, 0); trace(container.getChildAt(0) == circle2); // true trace(container.getChildAt(1) == circle1); // true
areInaccessibleObjectsUnderPoint | () | 方法 |
public function areInaccessibleObjectsUnderPoint(point:Point):Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
指出安全性限制是否會造成傳回的清單 (可用指定的 point
點呼叫 DisplayObjectContainer.getObjectsUnderPoint()
方法來取得) 省略任何顯示物件。 根據預設,來自某個網域的內容無法存取另一個網域的物件,除非您呼叫 Security.allowDomain()
方法才能這麼做。如需有關安全性的詳細資訊,請參閱「Flash Player 開發人員中心」主題:安全性。
point
參數位於「舞台」的座標空間,與顯示物件容器的座標空間可能不同 (除非顯示物件容器位於「舞台」)。 您可以使用 globalToLocal()
與 localToGlobal()
方法,在這些座標空間之間轉換座標點。
參數
point:Point — 可在其下層找尋的基準點。
|
Boolean — 如果該點包含具有安全性限制的子顯示物件則為 true 。
|
相關 API 元素
getObjectsUnderPoint()
DisplayObject.globalToLocal()
DisplayObject.localToGlobal()
範例 ( 如何使用本範例 )
container
。 此程式碼的下一個區段會使用 Loader 物件,從遠端檔案伺服器載入名為 "test.jpg" 的 JPEG 檔案。 請注意,LoaderContext 物件的 checkPolicyFile
屬性 (此物件可用來當作 load()
方法中的參數) 會設為 false
。 一旦載入檔案,程式碼會呼叫 loaded()
方法,而此方法會反過來呼叫 container.areInaccessibleObjectsUnderPoint()
,由於所載入的內容是假設來自不可存取的網域,所以這麼做會傳回 true
值:
import flash.display.Sprite; import flash.display.Loader; import flash.system.LoaderContext; import flash.net.URLRequest; import flash.events.Event; import flash.geom.Point; var container:Sprite = new Sprite(); var urlReq:URLRequest = new URLRequest("http://localhost/RemoteFile.swf"); var ldr:Loader = new Loader(); var context:LoaderContext = new LoaderContext(); context.checkPolicyFile = false; ldr.load(urlReq, context); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, urlNotFound); function loaded(event:Event):void { var pt:Point = new Point(1, 1); trace(container.areInaccessibleObjectsUnderPoint(pt)); // true } function urlNotFound(event:Event):void { trace("The URL was not found."); }
contains | () | 方法 |
public function contains(child:DisplayObject):Boolean
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
判斷指定的顯示物件是否為 DisplayObjectContainer 實體的子系,或為實體本身。 搜尋範圍包含了整個顯示清單 (包括此 DisplayObjectContainer 實體)。 孫系,或曾孫系 (以此類推) 每個都會傳回 true
。
參數
child:DisplayObject — 要測試的子物件。
|
Boolean — true ,如果 child 物件為 DisplayObjectContainer 的子系或容器本身;否則為 false 。
|
範例 ( 如何使用本範例 )
contains()
方法來顯示不同物件之間的關係:
import flash.display.Sprite; var sprite1:Sprite = new Sprite(); var sprite2:Sprite = new Sprite(); var sprite3:Sprite = new Sprite(); var sprite4:Sprite = new Sprite(); sprite1.addChild(sprite2); sprite2.addChild(sprite3); trace(sprite1.contains(sprite1)); // true trace(sprite1.contains(sprite2)); // true trace(sprite1.contains(sprite3)); // true trace(sprite1.contains(sprite4)); // false
getChildAt | () | 方法 |
public function getChildAt(index:int):DisplayObject
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
傳回存在於指定索引位置的子顯示物件實體。
參數
index:int — 子物件的索引位置。
|
DisplayObject — 位於指定索引位置的子顯示物件。
|
擲回值
RangeError — 如果子清單中不存在索引,則擲出例外。
| |
SecurityError — 這個子顯示物件屬於您無法存取的安全執行程序。 您可以讓子影片呼叫 Security.allowDomain() 來避免這個情況發生。
|
相關 API 元素
範例 ( 如何使用本範例 )
container
的顯示物件容器,並將三個顯示物件加入至 container
物件的子清單中。 getChildAt()
方法的呼叫會接著顯露出子物件的位置:
import flash.display.Sprite; var container:Sprite = new Sprite(); var sprite1:Sprite = new Sprite(); var sprite2:Sprite = new Sprite(); var sprite3:Sprite = new Sprite(); container.addChild(sprite1); container.addChild(sprite2); container.addChildAt(sprite3, 0); trace(container.getChildAt(0) == sprite3); // true trace(container.getChildAt(1) == sprite1); // true trace(container.getChildAt(2) == sprite2); // true
getChildByName | () | 方法 |
public function getChildByName(name:String):DisplayObject
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
傳回具有指定名稱的子顯示物件。 如果有一個以上的子顯示物件擁有指定的名稱,則方法會傳回子清單中的第一個物件。
getChildAt()
方法的執行速度比 getChildByName()
方法來得快。 getChildAt()
方法可以存取快取陣列中的子系,而 getChildByName()
方法則是可以跨越連接清單來存取子系。
參數
name:String — 要傳回的子系名稱。
|
DisplayObject — 具有指定名稱的子顯示物件。
|
擲回值
SecurityError — 這個子顯示物件屬於您無法存取的安全執行程序。 您可以讓子影片呼叫 Security.allowDomain() 方法來避免這個情況發生。
|
相關 API 元素
範例 ( 如何使用本範例 )
container
的顯示物件容器,並將兩個子顯示物件加入此容器中。 接著,此程式碼會呼叫 getChildByName()
和 getChildIndex()
方法來傳回 container
物件的子系索引位置 (此物件具有 name "sprite1"
)。
import flash.display.Sprite; import flash.display.DisplayObject; var container:Sprite = new Sprite(); var sprite1:Sprite = new Sprite(); sprite1.name = "sprite1"; var sprite2:Sprite = new Sprite(); sprite2.name = "sprite2"; container.addChild(sprite1); container.addChild(sprite2); var target:DisplayObject = container.getChildByName("sprite1"); trace(container.getChildIndex(target)); // 0
getChildIndex | () | 方法 |
public function getChildIndex(child:DisplayObject):int
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
傳回 child
DisplayObject 實體的索引位置。
參數
child:DisplayObject — 要辨識的 DisplayObject 實體。
|
int — 要辨識的子顯示物件之索引位置。
|
擲回值
ArgumentError — 如果子參數不是此物件的子系,則擲出例外。
|
範例 ( 如何使用本範例 )
container
的顯示物件容器,並將兩個子顯示物件加入此容器中。 接著,此程式碼會呼叫 getChildByName()
和 getChildIndex()
方法來傳回 container
物件的子系索引位置 (此物件具有 name "sprite1"
)。
import flash.display.Sprite; import flash.display.DisplayObject; var container:Sprite = new Sprite(); var sprite1:Sprite = new Sprite(); sprite1.name = "sprite1"; var sprite2:Sprite = new Sprite(); sprite2.name = "sprite2"; container.addChild(sprite1); container.addChild(sprite2); var target:DisplayObject = container.getChildByName("sprite1"); trace(container.getChildIndex(target)); // 0
getObjectsUnderPoint | () | 方法 |
public function getObjectsUnderPoint(point:Point):Array
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
傳回位於指定點底下,且屬於此 DisplayObjectContainer 實體之子系 (或孫系,以下類推) 的物件陣列。 任何因為安全理由而無法存取的子物件都會從傳回的陣列中省略掉。 若要判斷此安全性限制是否會影響到傳回的陣列,請呼叫 areInaccessibleObjectsUnderPoint()
方法。
point
參數位於「舞台」的座標空間,與顯示物件容器的座標空間可能不同 (除非顯示物件容器位於「舞台」)。 您可以使用 globalToLocal()
與 localToGlobal()
方法,在這些座標空間之間轉換座標點。
參數
point:Point — 可在其下層找尋的基準點。
|
Array — 位於指定點底下,且為此 DisplayObjectContainer 實體之子系 (或孫系,以下類推) 的物件陣列。
|
相關 API 元素
範例 ( 如何使用本範例 )
container
的顯示物件容器,並將兩個重疊的子顯示物件加入此容器中。 接著,程式碼會呼叫 getObjectsUnderPoint()
兩次 (第一次會使用只接觸到一個物件的點,然後再使用這兩個物件重疊處的點),接著傳回之陣列的 length
會顯示容器中每個點上的物件數量:
import flash.display.Sprite; import flash.geom.Point; var container:Sprite = new Sprite(); var square1:Sprite = new Sprite(); square1.graphics.beginFill(0xFFCC00); square1.graphics.drawRect(0, 0, 40, 40); var square2:Sprite = new Sprite(); square2.graphics.beginFill(0x00CCFF); square2.graphics.drawRect(20, 0, 30, 40); container.addChild(square1); container.addChild(square2); var pt:Point = new Point(10, 20); var objects:Array = container.getObjectsUnderPoint(pt); trace(objects.length); // 1 pt = new Point(35, 20); objects = container.getObjectsUnderPoint(pt); trace(objects.length); // 2
removeChild | () | 方法 |
public function removeChild(child:DisplayObject):DisplayObject
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
將指定的 child
DisplayObject 實體從 DisplayObjectContainer 實體的子清單中移除。 移除的子系 parent
屬性是設為 null
,而且如果子系沒有其它參照,物件就會被垃圾回收器移除。 任何位於 DisplayObjectContainer 子系上層的顯示物件,其索引位置會減掉 1。
垃圾回收器會重新分配未使用的記憶體空間。當變數或物件不再被參照使用,或是已經儲存至其它位置,則垃圾回收器會對記憶體空間進行清掃,掃除變數或物件之前佔用但已經沒有任何參照的記憶體空間。
參數
child:DisplayObject — 要移除的 DisplayObject 實體。
|
DisplayObject — 您傳遞至 child 參數的 DisplayObject 實體。
|
擲回值
ArgumentError — 如果子參數不是此物件的子系,則擲出例外。
|
範例 ( 如何使用本範例 )
container
的顯示物件容器,並將兩個子顯示物件加入此容器中。 事件偵聽程式會加入至 container
物件,讓使用者在按一下容器中的子物件時,removeChild()
方法就會將按下的子物件從容器的子清單中移除:
import flash.display.DisplayObject; import flash.display.Sprite; import flash.events.MouseEvent; var container:Sprite = new Sprite(); addChild(container); var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFFCC00); circle1.graphics.drawCircle(40, 40, 40); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0x00CCFF); circle2.graphics.drawCircle(120, 40, 40); container.addChild(circle1); container.addChild(circle2); container.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void { container.removeChild(DisplayObject(event.target)); }
removeChildAt | () | 方法 |
public function removeChildAt(index:int):DisplayObject
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
從 DisplayObjectContainer 子清單中的指定 index
位置移除子 DisplayObject。 移除的子系 parent
屬性是設為 null
,而且如果子系沒有其它參照,物件就會被垃圾回收器移除。 任何位於 DisplayObjectContainer 子系上層的顯示物件,其索引位置會減掉 1。
垃圾回收器會重新分配未使用的記憶體空間。當變數或物件不再被參照使用,或是已經儲存至其它位置,則垃圾回收器會對記憶體空間進行清掃,掃除變數或物件之前佔用但已經沒有任何參照的記憶體空間。
參數
index:int — 要移除的 DisplayObject 子索引。
|
DisplayObject — 已移除的 DisplayObject 實體。
|
擲回值
SecurityError — 這個子顯示物件屬於呼叫物件無法存取的安全執行程序。 您可以讓子影片呼叫 Security.allowDomain() 方法來避免這個情況發生。
| |
RangeError — 如果子清單中不存在索引,則擲出例外。
|
範例 ( 如何使用本範例 )
container
的顯示物件容器,並將兩個子顯示物件加入此容器中。 此程式碼接著會在您呼叫 removeChildAt()
方法來移除位於較低索引位置 (0) 之子物件時顯示此容器,而清單中的其它任何子物件則會往下移動一個位置:
import flash.display.Sprite; var container:Sprite = new Sprite(); var sprite1:Sprite = new Sprite(); sprite1.name = "sprite1"; var sprite2:Sprite = new Sprite(); sprite2.name = "sprite2"; container.addChild(sprite1); container.addChild(sprite2); trace(container.numChildren) // 2 container.removeChildAt(0); trace(container.numChildren) // 1 trace(container.getChildAt(0).name); // sprite2
removeChildren | () | 方法 |
public function removeChildren(beginIndex:int = 0, endIndex:int = 0x7fffffff):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 3.0, Flash Player 11 |
將所有 child
DisplayObject 實體從 DisplayObjectContainer 實體的子清單中移除。移除的子系之 parent
屬性是設定為 null
,且如果不存在子系的其它參考,物件就會被垃圾回收器移除。
垃圾回收器會重新分配未使用的記憶體空間。當變數或物件不再被參照使用,或是已經儲存至其它位置,則垃圾回收器會對記憶體空間進行清掃,掃除變數或物件之前佔用但已經沒有任何參照的記憶體空間。
參數
beginIndex:int (default = 0 ) — 開始位置。小於 0 的值會擲回 RangeError 。
| |
endIndex:int (default = 0x7fffffff ) — 結束位置。小於 0 的值會擲回 RangeError 。
|
擲回值
RangeError — 如果子清單中不存在 beginIndex 或 endIndex 位置,則擲出例外。
|
setChildIndex | () | 方法 |
public function setChildIndex(child:DisplayObject, index:int):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
變更顯示物件容器中現有子系的位置。 這樣會影響子物件的圖層。 例如,下列範例說明三個加上 a、b 與 c 標籤的顯示物件,分別位於 0、1 與 2 的索引位置:
當您使用 setChildIndex()
方法並指定已遭佔用的索引位置時,變更的位置只會介於顯示物件之前的位置和新位置之間,其它所有位置將維持不變。如果將子系移至比本身目前索引還「低」的索引位置,則兩者之間所有子系的索引參考都將「遞增」1。如果將子系移至比本身目前索引還「高」的索引位置,則兩者之間所有子系的索引參考都將「遞減」1。例如,如果上一個範例中的顯示物件容器名為 container
,則您可以呼叫下列程式碼來切換加上 a 與 b 標籤的顯示物件位置:
container.setChildIndex(container.getChildAt(1), 0);
這個程式碼會產生如下所示的物件排列:
參數
child:DisplayObject — 您要變更索引編號的 DisplayObject 子實體。
| |
index:int — 產生的 child 顯示物件索引編號。
|
擲回值
RangeError — 如果子清單中不存在索引,則擲出例外。
| |
ArgumentError — 如果子參數不是此物件的子系,則擲出例外。
|
相關 API 元素
範例 ( 如何使用本範例 )
container
的顯示物件容器,並將三個稍微重疊的子顯示物件加入此容器中。 當使用者按下這些物件中任何一個時,clicked()
方法會呼叫 setChildIndex()
方法,將按下的物件移動到 container
物件子清單中的最上層位置:
import flash.display.Sprite; import flash.events.MouseEvent; var container:Sprite = new Sprite(); addChild(container); var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFF0000); circle1.graphics.drawCircle(40, 40, 40); circle1.addEventListener(MouseEvent.CLICK, clicked); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0x00FF00); circle2.graphics.drawCircle(100, 40, 40); circle2.addEventListener(MouseEvent.CLICK, clicked); var circle3:Sprite = new Sprite(); circle3.graphics.beginFill(0x0000FF); circle3.graphics.drawCircle(70, 80, 40); circle3.addEventListener(MouseEvent.CLICK, clicked); container.addChild(circle1); container.addChild(circle2); container.addChild(circle3); addChild(container); function clicked(event:MouseEvent):void { var circle:Sprite = Sprite(event.target); var topPosition:uint = container.numChildren - 1; container.setChildIndex(circle, topPosition); }
stopAllMovieClips | () | 方法 |
public function stopAllMovieClips():void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 3.8, Flash Player 11.8 |
遞迴停止執行所有 MovieClips 的時間軸根源於此物件。
子顯示物件所屬的安全執行程序若執行程式碼沒有存取權,就會遭到忽略。
注意:透過 NetStream 物件控制的串流媒體播放將不會停止。
swapChildren | () | 方法 |
public function swapChildren(child1:DisplayObject, child2:DisplayObject):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
替換兩個指定子物件的 z 順序 (深度階層,由前至後順序)。 顯示物件容器中的所有其它子物件都會保留在相同的索引位置。
參數
child1:DisplayObject — 第一個子物件。
| |
child2:DisplayObject — 第二個子物件。
|
擲回值
ArgumentError — 如果任何一個子參數都不是此物件的子系,則擲回例外。
|
範例 ( 如何使用本範例 )
container
的顯示物件容器,然後將兩個子顯示物件加入至該容器,再說明對 swapChildren()
方法的呼叫有何影響:
import flash.display.Sprite; var container:Sprite = new Sprite(); var sprite1:Sprite = new Sprite(); sprite1.name = "sprite1"; var sprite2:Sprite = new Sprite(); sprite2.name = "sprite2"; container.addChild(sprite1); container.addChild(sprite2); trace(container.getChildAt(0).name); // sprite1 trace(container.getChildAt(1).name); // sprite2 container.swapChildren(sprite1, sprite2); trace(container.getChildAt(0).name); // sprite2 trace(container.getChildAt(1).name); // sprite1
swapChildrenAt | () | 方法 |
public function swapChildrenAt(index1:int, index2:int):void
語言版本: | ActionScript 3.0 |
執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
在子清單的兩個指定索引位置,替換子物件的 z 順序 (深度階層,由前至後順序)。顯示物件容器中的所有其它子物件都會保留在相同的索引位置。
參數
index1:int — 第一個子物件的索引位置。
| |
index2:int — 第二個子物件的索引位置。
|
擲回值
RangeError — 如果子清單中不存在任何一個索引。
|
範例 ( 如何使用本範例 )
container
的顯示物件容器,然後將三個子顯示物件加入至該容器,再說明對 swapChildrenAt()
方法的呼叫要如何重新排列該顯示物件容器中的子清單順序:
import flash.display.Sprite; var container:Sprite = new 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"; container.addChild(sprite1); container.addChild(sprite2); container.addChild(sprite3); trace(container.getChildAt(0).name); // sprite1 trace(container.getChildAt(1).name); // sprite2 trace(container.getChildAt(2).name); // sprite3 container.swapChildrenAt(0, 2); trace(container.getChildAt(0).name); // sprite3 trace(container.getChildAt(1).name); // sprite2 trace(container.getChildAt(2).name); // sprite1
DisplayObjectContainerExample
類別,連續建立五個橘色正方形。 您可以執行下列步驟來完成這項工作:
- 此建構函式會呼叫
configureAssets()
方法。 configureAssets()
方法會建立child
和lastChild
Sprite 物件。for
迴圈會建立五個橘色正方形,並依次安置這些正方形。- 每次建立 CustomSprite 物件時,它的建構函式就會呼叫
CustomSprite
物件的draw()
方法,它會藉由呼叫 Graphics 類別的beginFill()
、drawRect()
和endFill()
方法來建立一個 50 x 50 像素的方形。addChild()
方法會將每一個正方形都加入至顯示清單中。
package { import flash.display.DisplayObject; import flash.display.Sprite; public class DisplayObjectContainerExample extends Sprite { private var gutter:uint = 5; private var childCount:uint = 5; public function DisplayObjectContainerExample() { configureAssets(); } private function configureAssets():void { var child:Sprite = new CustomSprite(); var lastChild:Sprite = child; for (var i:uint = 1; i <= childCount; i++) { child = new CustomSprite(); child.x = lastChild.x + lastChild.width + gutter; addChild(child); lastChild = child; } } } } import flash.display.Sprite; class CustomSprite extends Sprite { private var size:uint = 50; private var bgColor:uint = 0xFFCC00; public function CustomSprite() { draw(size, size); } private function draw(w:uint, h:uint):void { graphics.beginFill(bgColor); graphics.drawRect(0, 0, w, h); graphics.endFill(); } }
Tue Jun 12 2018, 03:47 PM Z