Arbeta med visningslistan

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.

  1. Skapa ett nytt Flash-fildokument (ActionScript 3.0).

  2. Dra en Button från panelen Komponenter till bibliotekspanelen.

  3. Ö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 .