|
Alla ActionScript 3.0-komponenter ärver från klassen DisplayObject och kan därför komma åt dess metoder och egenskaper för att interagera med visningslistan.
Visningslistan
är hierarkin med visade objekt och visuella element i ett program. Den här hierarkin innehåller följande element:
-
Scenen, som är behållaren på den översta nivån
-
Visningsobjekt, bland annat former, MovieClips och textfält
-
Behållare för visningsobjekt, som är särskilda typer av visningsobjekt som kan innehålla underordnade visningsobjekt.
Objektens ordning i visningslistan visar deras djup i den överordnade behållaren. Ett objekts djup refererar till dess position uppifrån och ned eller framifrån och bakåt på scenen elelr i dess visningsbehållare. Djupordningen framgår när objekten överlappar, men finns även när de inte överlappar. Alla objekt i visningslistan har ett motsvarande djup på scenen. Om du vill ändra ett objekts djup genom att placera det framför eller flytta det bakom andra objekt, måste du ändra dess position i visningslistan. Objektens standardordning i visningslistan är den ordning som de placerades på scenen i. Position 0 i visningslistan är objektet längst ned i ordningsdjupet.
Lägga till en komponent i visningslistan
Du kan lägga till ett objekt i ett DisplayObjectContainer-objekt genom att anropa behållarens
addChild()
- eller
addChildAt()
-metod. När det gäller scenen kan du också lägga till ett objekt i dess visningslista vid redigering genom att skapa det, och när det gäller komponenter, genom att dra dem till scenen från komponentpanelen. Om du vill lägga till ett objekt i en behållare med ActionScript skapar du först en förekomst av det genom att anropa dess konstruktor med operatorn
new
, och anropar sedan någon av metoderna
addChild()
eller
addChildAt()
för att placera den på scenen och i visningslistan. Metoden
addChild()
placerar objektet i nästa position i visningslistan, och
addChildAt()
anger vilken position objektet ska läggas till i. Om du anger en position som redan är upptagen flyttas objektet på den positionen, samt objekten på högre positioner, uppåt ett steg. Egenskapen
numChildren
för ett DisplayObjectContainer-objekt innehåller antalet visningsobjekt som objektet innehåller. Du kan hämta ett objekt från visningslistan genom att anropa metoden
getChildAt()
och ange positionen. Om du vet namnet på objektet kan du också anropa metoden
getChildByName()
.
Obs!
När du lägger till en komponent med ActionScript måste du tilldela ett namn till dess namnegenskap om du vill komma åt den via namnet i visningslistan.
I följande exempel visas namnen och positionerna för tre komponenter i visningslistan. Först drar du en NumericStepper, en Button och en ComboBox till scenen så att de överlappar varandra, och ger dem förekomstnamnen
aNs
,
aButton
och
aCb
. Sedan lägger du till följande kod i bildruta 1 på tidslinjen i panelen Åtgärder:
var i:int = 0;
while(i < numChildren) {
trace(getChildAt(i).name + " is at position: " + i++);
}
Följande rader visas i utdatapanelen:
aNs is at position: 0
aButton is at position: 1
aCb is at position: 2
Flytta en komponent i visningslistan
Du kan ändra positionen för ett objekt i visningslistan, och dess visningsdjup, genom att anropa metoden
addChildAt()
, och ange namnet på ett objekt samt positionen där du vill placera det som metodens parametrar. Lägg till exempel till följande kod i det föregående exemplet om du vill placera NumericStepper högst upp, och upprepa slingan för att visa komponentens nya position i visningslistan:
this.addChildAt(aNs, numChildren - 1);
i = 0;
while(i < numChildren) {
trace(getChildAt(i).name + " is at position: " + i++);
}
Följande rader visas i utdatapanelen:
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 ska också visas framför de andra komponenterna på skärmen.
Observera att
numChildren
är antalet objekt (från 1 till
n
) i visningslistan, där den första positionen i listan är 0. Om det finns tre objekt i listan är det tredje objektets indexposition alltså 2. Det betyder att du kan referera till den sista positionen i visningslistan, eller till det översta objektet när det gäller visningsdjup, som
numChildren - 1
.
Ta bort en komponent från visningslistan
Du kan ta bort en komponent från en visningsobjektbehållare och dess visningslista med metoderna
removeChild()
och
removeChildAt()
. Med följande exempel placeras tre Button-komponenter framför varandra på scenen, och en händelseavlyssnare läggs till för varje komponent. När du klickar på en Button tar händelsehanteraren bort den från visningslistan och scenen.
-
Skapa ett nytt Flash-fildokument (ActionScript 3.0).
-
Dra en Button från panelen Komponenter till bibliotekspanelen.
-
Öppna åtgärdspanelen, markera bildruta 1 i huvudtidslinjen och lägg till följande kod:
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);
}
En fullständig förklaring av visningslistan finns i Visningsprogrammering i
Programmering med ActionScript 3.0
.
|
|
|