Een
TextBlock
-object is plaats waar regels tekst worden gemaakt. De inhoud van een
TextBlock
wordt toegewezen via het
TextElement
-object. Een
ElementFormat
-object handelt de opmaak van de tekst af. De klasse ElementFormat definieert eigenschappen zoals basislijnuitlijning, tekenspatiëring, tekstspatiëring, tekstrotatie en tekengrootte, -kleur en hoofd-/kleine letter. De klasse omvat ook een
FontDescription
, die nader wordt beschreven in
Werken met lettertypen
.
Het ElementFormat-object gebruiken
De constructor voor het
ElementFormat
-object kan worden gebruikt met een lange lijst optionele parameters, waaronder een
FontDescription
. U kunt deze eigenschappen ook buiten de constructor instellen. In het volgende voorbeeld wordt de relatie getoond van de verschillende objecten bij het definiëren en weergeven van een eenvoudige tekstregel:
package
{
import flash.display.Sprite;
import flash.text.*;
public class ElementFormatExample extends Sprite
{
private var tb:TextBlock = new TextBlock();
private var te:TextElement;
private var ef:ElementFormat;
private var fd:FontDescription = new FontDescription();
private var str:String;
private var tl:TextLine;
public function ElementFormatExample()
{
fd.fontName = "Garamond";
ef = new ElementFormat(fd);
ef.fontSize = 30;
ef.color = 0xFF0000;
str = "This is flash text";
te = new TextElement(str, ef);
tb.content = te;
tl = tb.createTextLine(null,600);
addChild(tl);
}
}
}
Lettertypekleur en transparantie (alfa)
Met de eigenschap
color
van het
ElementFormat
-object wordt de lettertypekleur ingesteld. De waarde is een geheel getal dat de RGB-componenten van de kleur weergeeft; bijvoorbeeld 0xFF0000 voor rood en 0x00FF00 voor groen. De standaardwaarde is zwart (0x000000).
Met de eigenschap
alpha
wordt de alfatransparantiewaarde van een element ingesteld (zowel
TextElement
als
GraphicElement
). Waarden kunnen variëren van 0 (volledig transparant) tot 1 (volledig ondoorzichtig, hetgeen de standaardwaarde is). Elementen met een
alpha
van 0 zijn onzichtbaar, maar wel actief. Deze waarde wordt vermenigvuldigd met eventuele overgeërfde alfawaarden, waardoor het element transparanter wordt.
var ef:ElementFormat = new ElementFormat();
ef.alpha = 0.8;
ef.color = 0x999999;
Basislijnuitlijning en -verschuiving
Het lettertype en de grootte van de grootste tekst op een regel bepaalt de dominante basislijn. U kunt deze waarde overschrijven door
TextBlock.baselineFontDescription
en
TextBlock.baselineFontSize
in te stellen. U kunt de dominante basislijn uitlijnen met een van een reeks basislijnen in de tekst. Deze basislijnen bevatten de stoklijn en de staartlijn of de ideografische boven- of onderkant of het ideografische midden.
-
A.
-
Stok
-
B.
-
Basislijn
-
C.
-
Staart
-
D.
-
x-hoogte
In het
ElementFormat
-object bepalen drie eigenschappen de basislijn- en uitlijningskenmerken. Met de eigenschap
alignmentBaseline
wordt de hoofdbasislijn van een
TextElement
of
GraphicElement
ingesteld. Deze basislijn is de “magnetische” lijn voor het element en tevens de positie waarop de dominante basislijn van alle tekst wordt uitgelijnd.
Met de eigenschap
dominantBaseline
wordt bepaald welke van de verschillende basislijnen van het element moet worden gebruikt. Dit bepaalt de verticale positie van het element op de lijn. De standaardwaarde is
TextBaseline.ROMAN
, maar dit kan ook zodanig worden ingesteld dat de
IDEOGRAPHIC_TOP
- of
IDEOGRAPHIC_BOTTOM
-basislijn dominant is.
Met de eigenschap
baselineShift
wordt de basislijn een aantal pixels op de y-as verplaatst. Bij normale (niet geroteerde) tekst wordt de basislijn met een positieve waarde omlaag en met een negatieve waarde omhoog verplaatst.
Hoofdletters/kleine letters
Met de eigenschap
TypographicCase
van
ElementFormat
wordt aangegeven of tekst in hoofdletters, kleine letters of als kleinkapitalen moet worden weergegeven.
var ef_Upper:ElementFormat = new ElementFormat();
ef_Upper.typographicCase = TypographicCase.UPPERCASE;
var ef_SmallCaps:ElementFormat = new ElementFormat();
ef_SmallCaps.typographicCase = TypographicCase.SMALL_CAPS;
Tekst roteren
U kunt een blok tekst of de glyphs in een tekstsegment in stappen van 90 graden roteren. Met de klasse TextRotation worden de volgende constanten gedefinieerd voor het instellen van zowel tekstblok- als glyphrotatie:
Constante
|
Waarde
|
Beschrijving
|
AUTO
|
“auto”
|
Geeft een rotatie van 90 graden linksom aan. Dit wordt doorgaans gebruikt bij verticale Aziatische tekst om alleen glyphs te roteren die rotatie behoeven.
|
ROTATE_0
|
“rotate_0”
|
Geeft geen rotatie aan.
|
ROTATE_180
|
“rotate_180”
|
Geeft 180 graden rotatie aan
|
ROTATE_270
|
“rotate_270”
|
Geeft 270 graden rotatie aan.
|
ROTATE_90
|
“rotate_90”
|
Geeft een rotatie van 90 rechtsom aan.
|
Als u de regels tekst in een tekstblok wilt roteren, stelt u de eigenschap
TextBlock.lineRotation
in voordat u de methode
TextBlock.createTextLine()
aanroept om de tekstregel te maken.
Als u de glyphs in een blok tekst of een segment wilt roteren, stelt u de eigenschap
ElementFormat.textRotation
in op het aantal graden dat u de glyphs wilt roteren. Een glyph is de vorm waaruit een teken bestaat of een deel van een teken dat uit meerdere glyphs bestaat. De letter a en de punt op een i zijn bijvoorbeeld glyphs.
Het roteren van glyphs is relevant in sommige Aziatische talen, waarin u de regels naar verticaal wilt roteren, maar niet de tekens binnen de regels. Zie
Oost-Aziatische tekst uitvullen
voor meer informatie over het roteren van Aziatische tekst.
Hier is een voorbeeld van het roteren van zowel een blok tekst als de glyphs daarin, zoals gebruikelijk bij Aziatische tekst. In het voorbeeld wordt ook een Japans lettertype gebruikt:
package
{
import flash.display.Sprite;
import flash.text.*;
public class RotationExample extends Sprite
{
private var tb:TextBlock = new TextBlock();
private var te:TextElement;
private var ef:ElementFormat;
private var fd:FontDescription = new FontDescription();
private var str:String;
private var tl:TextLine;
public function RotationExample()
{
fd.fontName = "MS Mincho";
ef = new ElementFormat(fd);
ef.textRotation = TextRotation.AUTO;
str = "This is rotated Japanese text";
te = new TextElement(str, ef);
tb.lineRotation = TextRotation.ROTATE_90;
tb.content = te;
tl = tb.createTextLine(null,600);
addChild(tl);
}
}
}
ElementFormat vergrendelen en klonen
Wanneer een
ElementFormat
-object wordt toegewezen aan een type
ContentElement
, wordt de eigenschap
locked
automatisch ingesteld op
true
. Als geprobeerd wordt een vergrendeld
ElementFormat
-object te wijzigen, leidt dit tot een
IllegalOperationError
. De beste manier is om een dergelijk object volledig te definiëren voordat u het toewijst aan een
TextElement
-instantie.
Als u een bestaande
ElementFormat
-instantie wilt wijzigen, controleert u eerst de eigenschap
locked
ervan. Als deze is ingesteld op
true
, gebruikt u de methode
clone()
om een ontgrendelde kopie van het object te maken. De eigenschappen van dit onvergrendelde object kunnen worden gewijzigd en dit object kan vervolgens worden toegewezen aan de
TextElement
-instantie. Nieuwe regels die hiermee worden gemaakt, hebben de nieuwe opmaak. Eerdere regels die zijn gemaakt met hetzelfde object en die de oude opmaak gebruiken, blijven ongewijzigd.
package
{
import flash.display.Sprite;
import flash.text.*;
public class ElementFormatCloneExample extends Sprite
{
private var tb:TextBlock = new TextBlock();
private var te:TextElement;
private var ef1:ElementFormat;
private var ef2:ElementFormat;
private var fd:FontDescription = new FontDescription();
public function ElementFormatCloneExample()
{
fd.fontName = "Garamond";
ef1 = new ElementFormat(fd);
ef1.fontSize = 24;
var str:String = "This is flash text";
te = new TextElement(str, ef);
tb.content = te;
var tx1:TextLine = tb.createTextLine(null,600);
addChild(tx1);
ef2 = (ef1.locked) ? ef1.clone() : ef1;
ef2.fontSize = 32;
tb.content.elementFormat = ef2;
var tx2:TextLine = tb.createTextLine(null,600);
addChild(tx2);
}
}
}
|
|
|