Voordelen van de weergaveoverzichtaanpak

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

In ActionScript 3.0 bestaan aparte klassen voor verschillende type weergaveobjecten. In ActionScript 1.0 en 2.0 bevinden veel van dezelfde type objecten zich in één klasse: de klasse MovieClip.

Deze klassenscheiding en de hiërarchische structuur van het weergaveoverzicht hebben de volgende voordelen:

  • Verbeterde renderingprestaties en minder geheugengebruik

  • Verbeterd dieptebeheer

  • Het volledig doorlopen van het weergaveoverzicht

  • Niet-weergegeven weergaveobjecten

  • Vereenvoudigde subclassificering van weergaveobjecten

Verbeterde renderingprestaties en kleinere bestandsgrootten

In ActionScript 1.0 en 2.0 kunt u vormen alleen in een object MovieClip tekenen. In ActionScript 3.0 hebt u eenvoudigere weergaveobjectklassen tot uw beschikking waarin u vormen kunt tekenen. Omdat de weergaveobjectklassen van ActionScript 3.0 niet alle methoden en eigenschappen hebben die een object MovieClip heeft, nemen ze minder geheugen en processorresources in beslag.

Elk object MovieClip bevat bijvoorbeeld eigenschappen voor de tijdlijn van een filmclip en een object Shape niet. De eigenschappen voor het beheren van de tijdlijn nemen veel geheugen en processorresources in beslag. In ActionScript 3.0 behaalt u betere prestaties als u het object Shape gebruikt. Het object Shape heeft minder overhead dan het meer complexe object MovieClip. Flash Player en AIR hoeven de eigenschappen MovieClip die niet worden gebruikt ook niet te beheren, waardoor de snelheid wordt verhoogd en het geheugengebruik wordt verminderd.

Verbeterd dieptebeheer

In ActionScript 1.0 en 2.0 wordt diepte beheerd via een lineair dieptebeheerschema en methoden zoals getNextHighestDepth() .

ActionScript 3.0 bevat de klasse DisplayObjectContainer die betere methoden en eigenschappen voor het beheer van diepteobjecten en weergaveobjecten biedt.

Wanneer u in ActionScript 3.0 een weergaveobject naar een nieuwe positie in de lijst met onderliggende items van een instantie DisplayObjectContainer verplaatst, wordt de positie van de overige onderliggende inhoud van de weergaveobjectcontainer automatisch gewijzigd en krijgen ze automatisch de juiste onderliggende indexposities in de weergaveobjectcontainer toegewezen.

In ActionScript 3.0 is het ook altijd mogelijk om alle onderliggende objecten van een weergaveobjectcontainer te vinden. Elke instantie DisplayObjectContainer bevat de eigenschap numChildren , die het aantal onderliggende objecten in de weergaveobjectcontainer opsomt. Omdat de lijst met onderliggende items van een weergaveobjectcontainer altijd een geïndexeerd overzicht is, kunt u elk object in het overzicht, vanaf indexpositie 0 tot de laatste indexpositie, laten weergeven ( numChildren - 1 ). Dit was niet mogelijk met de methoden en eigenschappen van een object MovieClip in ActionScript 1.0 en 2.0.

In ActionScript 3.0 kunt u het weergaveoverzicht eenvoudig opeenvolgend doorlopen, er bevinden zich geen tussenruimten tussen de indexnummers van een lijst met onderliggende items van een weergaveobjectcontainer. Het doorlopen van het weergaveoverzicht en het beheren van de diepte van objecten is nu veel eenvoudiger dan in ActionScript 1.0 en 2.0 het geval was. In ActionScript 1.0 en 2.0 kon een filmclip objecten met periodieke tussenruimten in de dieptevolgorde bevatten, wat het moeilijk maakt om het overzicht van objecten te doorlopen. In ActionScript 3.0 wordt elke lijst met onderliggende items van een weergaveobjectcontainer intern in cache geplaatst, waardoor er zeer snel kan worden gezocht (op index). Het doorlopen van de overige onderliggende inhoud van een weergaveobjectcontainer gebeurt ook zeer snel.

In ActionScript 3.0 hebt u alleen toegang tot de onderliggende inhoud van een weergaveobjectcontainer via de methode getChildByName() van de klasse DisplayObjectContainer.

Het volledig doorlopen van het weergaveoverzicht

In ActionScript 1.0 en 2.0 hebt u soms geen toegang tot sommige objecten, zoals vectorvormen, die zijn getekend met het Flash-ontwerpgereedschap. In ActionScript 3.0 hebt u toegang tot alle objecten in het weergaveoverzicht, zowel de objecten die zijn gemaakt met ActionScript en alle weergaveobjecten die zijn gemaakt met het Flash-ontwerpgereedschap. Zie Het weergaveoverzicht doorlopen voor meer informatie.

Niet-weergegeven weergaveobjecten

In ActionScript 3.0 kunt u weergaveobjecten maken die niet op het zichtbare weergaveoverzicht worden geplaatst. Dit worden niet-weergegeven weergaveobjecten genoemd. Een weergaveobject wordt alleen aan het zichtbare weergaveoverzicht toegevoegd wanneer u de methode addChild() of addChildAt() van een instantie DisplayObjectContainer aanroept, die reeds aan het weergaveoverzicht is toegevoegd.

U kunt de niet-weergegeven weergaveobjecten gebruiken om complexe weergaveobjecten samen te stellen, zoals weergaveobjecten die meerdere weergaveobjectcontainers met meerdere weergaveobjecten bevatten. Door weergaveobjecten niet weer te geven, kunt u complexe objecten samenstellen zonder verwerkingstijd in beslag te nemen voor het renderen van deze weergaveobjecten. Wanneer gewenst kunt u een niet-weergegeven weergaveobject aan het weergaveoverzicht toevoegen. Ook kunt u een onderliggend item in de weergaveobjectcontainer in het weergaveoverzicht plaatsen of deze van de lijst verwijderen en u kunt de items naar elke gewenste positie op de lijst verplaatsen.

Vereenvoudigde subclassificering van weergaveobjecten

In ActionScript 1.0 en 2.0 moet u vaak nieuwe objecten MovieClip aan een SWF-bestand toevoegen om standaardvormen te maken of om bitmaps weer te geven. In ActionScript 3.0 bevat de klasse DisplayObject veel ingebouwde subklassen, waaronder Shape en Bitmap. Omdat de klassen in ActionScript 3.0 gespecialiseerd zijn voor bepaalde typen objecten, is het eenvoudiger om basissubklassen van de ingebouwde klassen te maken.

Als u bijvoorbeeld een cirkel in ActionScript 2.0 wilt tekenen, kunt u een klasse CustomCircle maken die de klasse MovieClip uitbreidt wanneer een object van de aangepaste klasse wordt geïnstantieerd. Die klasse zou echter ook een aantal eigenschappen en methoden van de klasse MovieClip bevatten (zoals totalFrames ) die niet van toepassing op de klasse zijn. Maar in ActionScript 3.0 kunt u een klasse CustomCircle maken die het object Shape uitbreidt en die niet de irrelevante eigenschappen en methoden bevat die zich in de klasse MovieClip bevinden. De volgende code toont een voorbeeld van een klasse CustomCircle:

import flash.display.*; 
 
public class CustomCircle extends Shape 
{ 
    var xPos:Number; 
    var yPos:Number; 
    var radius:Number; 
    var color:uint; 
    public function CustomCircle(xInput:Number,  
                                        yInput:Number,  
                                        rInput:Number,  
                                        colorInput:uint) 
    { 
        xPos = xInput; 
        yPos = yInput; 
        radius = rInput; 
        color = colorInput; 
        this.graphics.beginFill(color); 
        this.graphics.drawCircle(xPos, yPos, radius); 
    } 
}