Ett
TextBlock
-objekt används när du vill skapa rader av text. Innehållet i ett
TextBlock
-objekt tilldelas via objektet
TextElement
. Ett
ElementFormat
-objekt hanterar textens formatering. Klassen ElementFormat definierar egenskaper som baslinjejustering, kerning, spårning, textrotation och teckensnittsstorlek, färg samt skiftläge. Den inkluderar även en
FontDescription
som behandlas utförligt i
Arbeta med teckensnitt
.
Använda objektet ElementFormat
Konstruktorn för objektet
ElementFormat
hanterar vilka som helst i en lång lista över alternativa parametrar, inklusive en
FontDescription
. Du kan även ange egenskaperna utanför konstruktorn. Exemplet nedan visar förhållandet mellan de olika objekten när en enkel textrad definieras och visas:
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);
}
}
}
Teckenfärg och genomskinlighet (alfa)
Egenskapen
color
i objektet
ElementFormat
anger teckenfärgen. Värdet är ett heltal som representerar färgens RGB-komponenter, t.ex. 0xFF0000 för rött och 0x00FF00 för grönt. Standardvärdet är svart (0x000000).
Egenskapen
alpha
ställer in alfagenomskinlighetsvärdet för ett element (både
TextElement
och
GraphicElement
). Värdena kan gå från 0 (helt genomskinlig) till 1 (helt ogenomskinlig vilket är standardvärdet). Element med ett
alfavärde
på 0 är osynliga men fortfarande aktiva. Värdet multipliceras med eventuella ärvda alfavärden vilket gör elementet mer genomskinligt.
var ef:ElementFormat = new ElementFormat();
ef.alpha = 0.8;
ef.color = 0x999999;
Baslinjejustering och förskjutning
Teckensnittet och storleken på den största texten på en rad avgör den dominerande baslinjen. Du kan åsidosätta dessa värden genom att ställa in
TextBlock.baselineFontDescription
och
TextBlock.baselineFontSize
. Du kan justera den dominanta baslinjen med en av flera baslinjer i texten. Dessa baslinjer inkluderar uppstapeln och nedstapeln eller den ideografiska överdelen, mittdelen eller underdelen.
-
A.
-
Uppstapel
-
B.
-
Baslinje
-
C.
-
Nedstapel
-
D.
-
x-höjd
Tre egenskaper avgör egenskaperna för baslinjen och justeringen i objektet
ElementFormat
. Egenskapen
alignmentBaseline
ställer in huvudbaslinjen för ett
TextElement
eller
GraphicElement
. Baslinjen är ”fästlinjen” för elementet och det är efter det läget som den dominerande baslinjen för all text justeras.
Egenskapen
dominantBaseline
anger vilka av elementets olika baslinjer som ska användas och som anger den vertikala positionen för elementet på den raden. Standardvärdet är
TextBaseline.ROMAN
, men du kan även ange att baslinjen
IDEOGRAPHIC_TOP
eller
IDEOGRAPHIC_BOTTOM
ska vara dominerande.
Egenskapen
baselineShift
flyttar baslinjen med ett angivet antal pixlar längs y-axeln. Med normal (ej roterad) text flyttar ett positivt värde baslinjen nedåt och ett negativt värde flyttar den uppåt.
Typografiskt skiftläge
Egenskapen
TypographicCase
i
ElementFormat
anger textens skiftläge, t.ex. versaler, gemener eller kapitäler.
var ef_Upper:ElementFormat = new ElementFormat();
ef_Upper.typographicCase = TypographicCase.UPPERCASE;
var ef_SmallCaps:ElementFormat = new ElementFormat();
ef_SmallCaps.typographicCase = TypographicCase.SMALL_CAPS;
Rotera text
Du kan rotera ett textblock eller glyferna i ett textsegment i steg om 90 grader. Klassen TextRotation definierar följande konstanter för inställning av både textblock och glyfernas rotering:
Konstant
|
Värde
|
Beskrivning
|
AUTO
|
”auto”
|
Anger 90 graders rotation moturs. Används i vanliga fall med vertikal asiatisk text för att enbart rotera glyfer som kräver rotering.
|
ROTATE_0
|
”rotate_0”
|
Anger ingen rotation.
|
ROTATE_180
|
”rotate_180”
|
Anger 180 graders rotering.
|
ROTATE_270
|
”rotate_270”
|
Anger 270 graders rotering.
|
ROTATE_90
|
”rotate_90”
|
Anger 90 graders rotation medurs.
|
Ställ in egenskapen
TextBlock.lineRotation
innan du anropar metoden
TextBlock.createTextLine()
för att skapa textraden om du vill rotera textrader i ett textblock.
När du vill rotera glyfer i ett textblock eller -segment ska du ställa in egenskapen
ElementFormat.textRotation
på det antal grader som du vill rotera glyferna. En glyf är den form som skapar ett tecken eller en del av ett tecken som består av flera glyfer. Bokstaven ”a” och pricken över ett ”i” är exempel på glyfer.
Roterade glyfer används för vissa asiatiska språk när du vill rotera linjer vertikalt men inte tecknen på raderna. Mer information om att rotera asiatisk text finns i
Justera östasiatisk text
.
Nedan finns ett exempel hur du roterar både ett textblock och glyferna i det så som du gör för asiatisk text. I exemplet används även ett japanskt teckensnitt:
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);
}
}
}
Låsa och klona ElementFormat
När ett
ElementFormat
-objekt tilldelas en typ av
ContentElement
, ställs egenskapen
locked
automatiskt in på
true
. Om du försöker ändra ett låst
ElementFormat
-objekt, inträffar felet
IllegalOperationError
. Det bästa sättet är att helt definiera ett sådant objekt innan det tilldelas till en
TextElement
-instans.
Om du vill ändra en befintlig
ElementFormat
-instans kontrollerar du först egenskapen
locked
. Om egenskapen är
true
kan du skapa en olåst kopia av objektet med metoden
clone()
. Du kan ändra egenskaperna för det olåsta objektet och sedan tilldela det till
TextElement
-instansen. Eventuella nya rader som skapas kommer att ha den nya formateringen. Rader som skapats tidigare för samma objekt med den gamla formateringen ändras inte.
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);
}
}
}
|
|
|