Formatieren von Text

Flash Player 10 und höher, Adobe AIR 1.5 und höher

Das TextBlock -Objekt ist eine Factory zum Erstellen von Textzeilen. Der Inhalt eines TextBlock -Objekts wird mithilfe des TextElement -Objekts zugewiesen. Das ElementFormat -Objekt legt die Formatierung des Textes fest. Die ElementFormat-Klasse definiert Eigenschaften wie die Ausrichtung der Grundlinie, Kerning, Laufweite, Textdrehung sowie Schriftgröße, Schriftfarbe und Groß-/Kleinschreibung. Er enthält außerdem ein FontDescription , welches detailliert unter Arbeiten mit Schriftarten beschrieben wird.

Verwenden des ElementFormat-Objekts

Der Konstruktor für das ElementFormat -Objekt lässt eine große Anzahl optionaler Parameter zu, unter anderem eine FontDescription . Sie können diese Eigenschaften auch außerhalb des Konstruktors festlegen. Im folgenden Beispiel wird die Beziehung zwischen den verschiedenen Objekten beim Definieren und Anzeigen einer einfachen Textzeile dargestellt:

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); 
        } 
    } 
}

Schriftfarbe und Transparenz (Alpha)

Die Eigenschaft color des ElementFormat -Objekts legt die Schriftfarbe fest. Der Wert ist eine Ganzzahl, die die RGB-Komponenten der Farbe angibt, z. B. 0xFF0000 für Rot und 0x00FF00 für Grün. Der Standardwert ist Schwarz (0x000000).

Die Eigenschaft alpha legt den Wert für die Alphatransparenz eines Elements ( TextElement und GraphicElement ) fest. Die möglichen Werte reichen von 0 (vollständig transparent) bis 1 (vollständig deckend, Standardwert). Elemente mit einem alpha -Wert von 0 sind zwar nicht sichtbar, jedoch trotzdem aktiv. Dieser Wert wird mit beliebigen übernommenen Alphawerten multipliziert, wodurch das Element transparenter dargestellt wird.

var ef:ElementFormat = new ElementFormat(); 
ef.alpha = 0.8; 
ef.color = 0x999999; 

Grundlinienausrichtung und -verschiebung

Die dominierende Grundlinie wird durch die Schriftart und -größe des größten Textes in einer Zeile bestimmt. Sie können diese Werte überschreiben, indem Sie TextBlock.baselineFontDescription und TextBlock.baselineFontSize festlegen. Die dominierende Grundlinie kann an einer der anderen Grundlinien innerhalb des Textes ausgerichtet werden. Zu diesen Grundlinien zählen die Oberlängen- und die Unterlängenlinie sowie die Oberseite, die Mitte oder die Unterseite von Ideogrammen.

Text mit Oberlänge, Grundlinie,Unterlänge und x-Höhe
A.
Oberlänge

B.
Grundlinie

C.
Unterlänge

D.
x-Höhe

Im Objekt ElementFormat werden die Merkmale der Grundlinie und Ausrichtung durch drei Eigenschaften bestimmt. Die Eigenschaft alignmentBaseline legt die Hauptgrundlinie eines TextElement oder GraphicElement fest. Diese Grundlinie ist die „Ausrichtungslinie“ für das Element, d. h. an dieser Position wird die dominierende Grundlinie des gesamten Textes ausgerichtet.

Die Eigenschaft dominantBaseline gibt an, welche der Grundlinien des Elements, durch die die vertikale Position des Elements auf der Linie bestimmt wird, zu verwenden ist. Der Standardwert ist TextBaseline.ROMAN , es kann jedoch auch die IDEOGRAPHIC_TOP - oder IDEOGRAPHIC_BOTTOM -Grundlinie als dominierende Grundlinie festgelegt werden.

Die Eigenschaft baselineShift verschiebt die Grundlinie um eine festgelegte Anzahl von Pixeln auf der y-Achse. In normalem Text (ohne Drehung) wird die Grundlinie bei einem positiven Wert nach unten und bei einem negativen Wert nach oben verschoben.

Typografische Groß-/Kleinschreibung

Die Eigenschaft TypographicCase eines ElementFormat -Objekts gibt die Groß-/Kleinschreibung von Text an, z. B. Großbuchstaben, Kleinbuchstaben oder Kapitälchen.

 
var ef_Upper:ElementFormat = new ElementFormat(); 
ef_Upper.typographicCase = TypographicCase.UPPERCASE; 
 
var ef_SmallCaps:ElementFormat = new ElementFormat(); 
ef_SmallCaps.typographicCase = TypographicCase.SMALL_CAPS; 

Drehen von Text

Sie können einen Textblock oder die Zeichen (Glyphen) innerhalb eines Textsegments in Schritten von 90 Grad drehen. Die TextRotation-Klasse definiert die folgenden Konstanten, um die Drehung von Textblöcken und Zeichen festzulegen:

Konstante

Wert

Beschreibung

AUTO

„auto“

Gibt eine Drehung um 90 Grad gegen den Uhrzeigersinn an. Sie wird zumeist bei vertikalem asiatischem Text verwendet, um nur die erforderlichen Zeichen zu drehen.

ROTATE_0

„rotate_0“

Gibt keine Drehung an.

ROTATE_180

„rotate_180“

Gibt eine Drehung um 180 Grad an.

ROTATE_270

„rotate_270“

Gibt eine Drehung um 270 Grad an.

ROTATE_90

„rotate_90“

Gibt eine Drehung um 90 Grad im Uhrzeigersinn an.

Legen Sie zum Drehen der Textzeilen in einem Textblock die Eigenschaft TextBlock.lineRotation fest, bevor Sie die TextBlock.createTextLine() -Methode aufrufen, um die Textzeile zu erstellen.

Um die Zeichen (Glyphen) innerhalb eines Textblocks oder -segments zu drehen, legen Sie für die Eigenschaft ElementFormat.textRotation die Gradzahl fest, um die die Zeichen gedreht werden sollen. Als Glyphe wird die Form eines Zeichens oder eines Teils des Zeichens, das aus mehreren Glyphen besteht, bezeichnet. Der Buchstabe „a“ und der Punkt auf dem „i“ sind beispielsweise Glyphen.

Das Drehen von Glyphen ist vor allem in asiatischen Sprachen wichtig, um die Zeilen in eine vertikale Ausrichtung zu bringen, ohne die Zeichen innerhalb der Zeilen zu drehen. Weitere Informationen zum Drehen von asiatischem Text finden Sie unter Ausrichten von asiatischem Text .

Im folgenden Beispiel wird das Drehen eines Textblocks und der darin enthaltenen Zeichen veranschaulicht, wie z. B. bei asiatischem Text. Zudem wird in diesem Beispiel eine japanische Schriftart verwendet:

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); 
        } 
    } 
}

Sperren und Klonen des ElementFormat-Objekts

Wenn ein ElementFormat -Objekt einem beliebigen ContentElement -Typ zugewiesen ist, wird die Eigenschaft locked des Objekts automatisch auf true festgelegt. Wenn Sie versuchen, ein gesperrtes ElementFormat -Objekt zu bearbeiten, wird eine IllegalOperationError -Ausnahme ausgelöst. Die beste Vorgehensweise ist, ein solches Objekt vollständig zu definieren, bevor Sie es einer TextElement -Instanz zuweisen.

Wenn Sie eine vorhandene ElementFormat -Instanz ändern möchten, müssen Sie zunächst deren locked -Eigenschaft überprüfen. Wenn der Wert true lautet, können Sie mit der clone() -Methode eine ungesperrte Kopie des Objekts erstellen. Die Eigenschaften dieses ungesperrten Objekts können geändert werden, und anschließend kann des Objekt mit der TextElement -Instanz verknüpft werden. Alle aus dem Objekt neu erstellten Zeilen weisen die neue Formatierung auf. Zuvor von diesem Objekt erstellte Zeilen, die das alte Format verwenden, bleiben unverändert.

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); 
        } 
    } 
}