Stijlen instellen

De stijlen van een component geven doorgaans waarden voor skins, pictogrammen, tekstopmaak en opvulling wanneer Flash de component in zijn verschillende toestanden tekent. Flash tekent bijvoorbeeld een Button met een andere skin om de toestand Omlaag weer te geven, die optreedt wanneer u er met de muisknop op klikt, dan de skin voor de normale toestand (Omhoog). Er wordt ook een andere skin gebruikt voor de uitgeschakelde toestand die wordt veroorzaakt door de eigenschap enabled op false in te stellen.

U kunt stijlen voor componenten instellen op document-, klasse- of instantieniveau. Bovendien kunnen sommige stijleigenschappen worden overerfd van een bovenliggende component. De component List overerft bijvoorbeeld ScrollBar-stijlen van een bovenliggende BaseScrollPane.

U kunt als volgt stijlen instellen om een component aan te passen:

  • Stel stijlen in op een componentinstantie. U kunt kleur- en teksteigenschappen voor een enkele componentinstantie wijzigen. Dit is in sommige gevallen effectief, maar het kan veel tijd in beslag nemen om afzonderlijke eigenschappen voor alle componenten in een document in te stellen.

  • Stel stijlen in voor alle componenten van gegeven type in een document. Wanneer u een consistent uiterlijk voor alle componenten van een zelfde type wilt toepassen (bijvoorbeeld alle instanties CheckBox of Button in een document), kunt u stijlen op componentniveau instellen.

    De waarden van de stijleigenschappen die op containers zijn ingesteld, worden overerfd door de componenten in de container.

    Flash geeft de wijzigingen die in stijleigenschappen worden gemaakt niet weer wanneer u de componenten in het werkgebied met live voorvertoning weergeeft.

Stijlinstellingen

Hier volgen een aantal belangrijke aanwijzingen over het gebruik van stijlen:

Overerving
Een onderliggende component wordt ingesteld om een stijl van de bovenliggende component te overerven. U kunt binnen ActionScript geen overerving voor stijlen instellen.

Prioriteit
Wanneer een componentstijl op meer dan één manier wordt ingesteld, gebruikt Flash de eerste stijl die het tegenkomt volgens de prioriteitsvolgorde. Flash zoekt in de volgende volgorde naar stijlen, tot het een waarde vindt:
  1. Flash zoekt naar een stijleigenschap in de componentinstantie.

  2. Als de stijl een van de overervende stijlen is, zoekt Flash in de bovenliggende hiërarchie naar een overerfde waarde.

  3. Flash zoekt naar de stijl in de component.

  4. Flash zoekt naar een algemene instelling in StyleManager.

  5. Als de eigenschap nog steeds niet is gedefinieerd, krijgt de eigenschap de waarde undefined .

De standaardstijlen van een component gebruiken

U kunt de standaardstijlen voor een component benaderen met de statische methode getStyleDefinition() voor de componentklasse. De volgende code haalt bijvoorbeeld de standaardstijlen voor de component ComboBox op en geeft de standaardwaarden voor de eigenschappen buttonWidth en downArrowDownSkin weer:

import fl.controls.ComboBox; 
var styleObj:Object = ComboBox.getStyleDefinition(); 
trace(styleObj.buttonWidth); // 24 
trace(styleObj.downArrowDownSkin); // ScrollArrowDown_downSkin

Stijlen voor een componentinstantie instellen en ophalen

Elke instantie van een UI-component kan de methoden setStyle() en getStyle() direct aanroepen om een stijl in te stellen of op te halen. Met de volgende syntaxis stelt u een stijl en waarde voor een componentinstantie in:

instanceName.setStyle("styleName", value);

Met deze syntaxis haalt u een stijl voor een componentinstantie op:

var a_style:Object = new Object(); 
a_style = instanceName.getStyle("styleName");

De methode getStyle() retourneert het type Object omdat het meerdere stijlen met verschillende gegevenstypen kan retourneren. De volgende code stelt bijvoorbeeld de tekenstijl voor een instantie TextArea ( aTa ) in en haalt deze vervolgens op met de methode getStyle() . In het voorbeeld wordt de geretourneerde waarde naar een object TextFormat gecast om het toe te wijzen aan een variabele TextFormat. Zonder de cast zou de compiler een fout geven voor een poging om een variabele Object naar een variabele TextFormat te brengen.

import flash.text.TextFormat; 
 
var tf:TextFormat = new TextFormat(); 
tf.font = "Georgia"; 
aTa.setStyle("textFormat",tf); 
aTa.text = "Hello World!"; 
var aStyle:TextFormat = aTa.getStyle("textFormat") as TextFormat; 
trace(aStyle.font);

TextFormat gebruiken om teksteigenschappen in te stellen

Gebruik het object TextFormat om tekst voor een componentinstantie op te maken. Het object TextFormat heeft eigenschappen waarmee u teksteigenschappen kunt opgeven, zoals bold , bullet , color , font , italic , size en een aantal andere. U kunt deze eigenschappen in het object TextFormat instellen en vervolgens de methode setStyle() aanroepen om deze op een componentinstantie toe te passen. Met de volgende code worden bijvoorbeeld de eigenschappen font , size en bold van een object TextFormat ingesteld en op een instantie Button toegepast:

/* Create a new TextFormat object to set text formatting properties. */ 
var tf:TextFormat = new TextFormat(); 
tf.font = "Arial"; 
tf.size = 16; 
tf.bold = true; 
a_button.setStyle("textFormat", tf);

In het volgende afbeelding wordt het effect van deze instellingen op een verzendknop getoond:

Knop met label waarop een nieuwe stijl textFormat is toegepast

Stijleigenschappen die met setStyle() op een componentinstantie zijn ingesteld, hebben de hoogste prioriteit en overschrijven alle andere stijlinstellingen. Hoe meer eigenschappen u op een enkele componentinstantie instelt met setStyle() , hoe langzamer de component bij uitvoering wordt gerenderd.

Een stijl voor alle instanties van een component instellen

U kunt een stijl voor alle instanties van een componentklasse instellen met de statische methode setComponentStyle() van de klasse StyleManager. U kunt bijvoorbeeld de kleur van tekst voor alle Buttons op rood instellen door eerst een Button naar het werkgebied te slepen en vervolgens in het deelvenster Handelingen de volgende ActionScript-code aan frame 1 van de tijdlijn toe te voegen:

import fl.managers.StyleManager; 
import fl.controls.Button; 
 
var tf:TextFormat = new TextFormat(); 
tf.color = 0xFF0000; 
StyleManager.setComponentStyle(Button, "textFormat", tf);

Alle Buttons die u vervolgens aan het werkgebied toevoegt krijgen rode labels.

Een stijl voor alle componenten instellen

U kunt een stijl instellen voor alle componenten met behulp van de statische methode setStyle() van de klasse StyleManager.

  1. Sleep een component List naar het werkgebied en geef deze de instantienaam aList .

  2. Sleep een component Button naar het werkgebied en geef deze de instantienaam aButton .

  3. Druk op F9 of selecteer Handelingen in het menu Venster om het deelvenster Handelingen te openen als het niet al open is, en voer de volgende code in frame 1 van de tijdlijn in om de tekstkleur in te stellen op rood voor alle componenten:

    import fl.managers.StyleManager; 
     
    var tf:TextFormat = new TextFormat(); 
    tf.color = 0xFF0000; 
    StyleManager.setStyle("textFormat", tf);
  4. Voeg de volgende code toe aan het deelvenster Handelingen om de lijst met tekst te vullen.

    aList.addItem({label:"1956 Chevy (Cherry Red)", data:35000}); 
    aList.addItem({label:"1966 Mustang (Classic)", data:27000}); 
    aList.addItem({label:"1976 Volvo (Xcllnt Cond)", data:17000}); 
    aList.allowMultipleSelection = true;
  5. Selecteer Besturing > Film testen of druk op Ctrl+Enter om de code te compileren en de inhoud te testen. De tekst in zowel het knoplabel als de lijst zou nu rood moeten zijn.