所有 ActionScript 3.0 組件都是繼承自 DisplayObject 類別,因此,存取它的方法和屬性就可以和顯示清單進行互動。「顯示清單」是已顯示物件和應用程式中視覺元素的階層架構。這個階層架構包括下列元素:
顯示清單中的物件順序決定了它們在父容器中的深度。物件的深度代表該物件在「舞台」上或其顯示容器中由上到下或由前到後的位置。物件重疊時就可以看出深度的順序,但物件不重疊時仍然可以看出深度的順序。顯示清單中的每個物件都有一個在「舞台」上的對應深度。如果要將物件放到最前面,或是移到其它物件後面以變更物件的深度,您必須變更它在顯示清單中的位置。顯示清單中預設的物件順序是之前將它們放入「舞台」時的順序。顯示清單中的位置 0 表示位在深度順序底部的物件。
將組件加入到顯示清單
您可以呼叫容器的
addChild()
或
addChildAt()
方法,將物件加入 DisplayObjectContainer 物件中。如果是在「舞台」上,您可以先建立物件,然後在編寫期間將它加入到它的顯示清單中;如果是加入組件,則可以將它從「組件」面板拖曳到「舞台」上。如果要使用 ActionScript 將物件加入到容器,請先使用
new
運算子叫用物件的建構函式來建立它的實體,然後呼叫
addChild()
或
addChildAt()
方法將它放到「舞台」上和顯示清單中。
addChild()
方法會將物件放入顯示清單中的下一個位置上,而
addChildAt()
則是指定要加入物件的位置。如果指定的位置已經有物件佔用,這個位置上以及它上方的物件將往上移動 1 個位置。DisplayObjectContainer 物件的
numChildren
屬性則包含它所含有的顯示物件數目。從顯示清單擷取物件的方式是,呼叫
getChildAt()
方法並指定位置,或是在知道物件的名稱時呼叫
getChildByName()
方法。
備註:
如果想透過顯示清單中的名稱來存取物件,在使用 ActionScript 加入組件時就必須將名稱指定給它的 name 屬性。
下列範例會從顯示清單中顯示三個組件的名稱和位置。首先,將 NumericStepper、Button 和 ComboBox 拖曳到「舞台」上使它們互相重疊,並設定
aNs
、
aButton
和
aCb
的實體名稱。然後,在「時間軸」之「影格 1」的「動作」面板中,加入下列程式碼:
var i:int = 0;
while(i < numChildren) {
trace(getChildAt(i).name + " is at position: " + i++);
}
您應該會在「輸出」面板中看到下列結果:
aNs is at position: 0
aButton is at position: 1
aCb is at position: 2
移動顯示清單中的組件
您可以呼叫
addChildAt()
方法並提供物件的名稱以及您要放入物件的位置做為方法的參數,變更物件在顯示清單和顯示深度中的位置。例如,將下列程式碼加入上一個範例就會將 NumericStepper 放到頂端,再循環執行一次則會顯示組件在顯示清單中的新位置:
this.addChildAt(aNs, numChildren - 1);
i = 0;
while(i < numChildren) {
trace(getChildAt(i).name + " is at position: " + i++);
}
您應該會在「輸出」面板中看到下列結果:
aNs is at position: 0
aButton is at position: 1
aCb is at position: 2
aButton is at position: 0
aCb is at position: 1
aNs is at position: 2
NumericStepper 也應該會出現在螢幕上其它組件的前面。
請注意,
numChildren
是顯示清單中物件的數目 (從 1 到
n
),而清單中的第一個位置是 0。因此當清單中有三個物件時,第三個物件的索引位置即是 2。也就是
numChildren - 1
可以用來表示顯示清單的最後一個位置,以顯示深度而言,則是最頂端的物件。
移除顯示清單中的組件
您可以使用
removeChild()
和
removeChildAt()
方法,從顯示物件容器和組件的顯示清單中將組件移除。下列範例會將三個 Button 組件重疊放到「舞台」上,並為每個組件加入事件偵聽程式。當您按一下每個 Button 後,事件處理常式就會將它從顯示清單和「舞台」上移除。
-
建立新的 Flash 檔案 (ActionScript 3.0) 文件。
-
將 Button 從「組件」面板拖曳到「元件庫」面板。
-
開啟「動作」面板,選取主要「時間軸」中的「影格 1」,然後加入下列程式碼:
import fl.controls.Button;
var i:int = 0;
while(i++ < 3) {
makeButton(i);
}
function removeButton(event:MouseEvent):void {
removeChildAt(numChildren -1);
}
function makeButton(num) {
var aButton:Button = new Button();
aButton.name = "Button" + num;
aButton.label = aButton.name;
aButton.move(200, 200);
addChild(aButton);
aButton.addEventListener(MouseEvent.CLICK, removeButton);
}
如需顯示清單的完整說明,請參閱「ActionScript 3.0 程式設計」中的「顯示程式設計」。
|
|
|