Metin biçimlendirme

Flash Player 10 ve üstü, Adobe AIR 1.5 ve üstü

TextBlock nesnesi, metin satırları oluşturmak için kullanılan bir fabrikadır. Bir TextBlock öğesinin içeriği, TextElement nesnesi üzerinden atanır. ElementFormat nesnesi, metnin biçimlendirmesini işler. ElementFormat sınıfı, satır taban çizgisi hizalaması, karakter aralığı, izleme, metin dönüşü ve font boyutu, rengi ve büyük/küçük harf durumu gibi özellikleri tanımlar. Ayrıca, Fontlarla çalışma konusunda ayrıntılı olarak ele alınan bir FontDescription öğesini de içerir.

ElementFormat nesnesini kullanma

ElementFormat nesnesinin yapıcısı, bir FontDescription da dahil olmak üzere çok sayıda isteğe bağlı parametre alır. Bu özellikleri yapıcının dışında da ayarlayabilirsiniz. Aşağıdaki örnek, basit metin satırının tanımlanması ve görüntülenmesinde çeşitli nesnelerin ilişkisini gösterir:

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

Font rengi ve saydamlık (alfa)

ElementFormat nesnesinin renk özelliği, font rengini ayarlar. Değer, rengin RGB bileşenlerini temsil eden bir tam sayıdır. Örneğin kırmızı için 0xFF0000 ve yeşil için 0x00FF00. Varsayılan siyahtır (0x000000).

alpha özelliği, bir öğenin ( TextElement hem de GraphicElement ) alfa saydamlığını ayarlar. Değerler 0 (tamamen saydam) ile 1 (tamamen opak, varsayılan budur) arasında değişebilir. alpha özelliği 0 olan öğeler görünmez ancak yine de etkindir. Bu değer, miras alınan alfa değerleriyle çarpılarak öğeyi daha saydam hale getirir.

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

Satır taban çizgisi hizalaması ve kayması

Bir satırdaki en büyük metnin fontu ve boyutu, o metnin baskın satır taban çizgisini belirler. TextBlock.baselineFontDescription ve TextBlock.baselineFontSize öğelerini ayarlayarak bu değerleri geçersiz kılabilirsiniz. Baskın satır taban çizgisini, metin içindeki birkaç satır taban çizgisinden biriyle hizalayabilirsiniz. Bu taban çizgileri arasında, harfin üst çıkıntı çizgisi ve alt çıkıntı çizgisi veya ideografik üst, orta veya alt kısım yer alır.

harfin üst çıkıntı çizgisini, satır taban çizgisini, harfin alt çıkıntı çizgisini ve x yüksekliğini gösteren metin
A.
Harfin üst çıkıntısı

B.
Satır taban çizgisi

C.
Harfin alt çıkıntısı

D.
x yüksekliği

ElementFormat nesnesinde, satır taban çizgisi ve hizalama özelliklerini üç özellik belirler. alignmentBaseline özelliği, bir TextElement veya GraphicElement öğesinin ana satır taban çizgisini ayarlar. Satır taban çizgisi, öğenin "sığdırılacağı" satırdır ve tüm metnin baskın satır taban çizgisi bu konuma göre hizalanır.

dominantBaseline özelliği, öğenin satır üzerindeki dikey konumunu belirleyen çeşitli satır taban çizgilerinden hangisinin kullanılacağını belirtir. Varsayılan değer TextBaseline.ROMAN olsa da bu, IDEOGRAPHIC_TOP veya IDEOGRAPHIC_BOTTOM satır taban çizgileri baskın olacak şekilde de ayarlanabilir.

baselineShift özelliği, satır taban çizgisini y ekseninde belirli bir piksel sayısı kadar hareket ettirir. Normal (döndürülmemiş) metinde pozitif bir değer, satır taban çizgisini aşağı ve negatif bir değer, satır taban çizgisini yukarı hareket ettirir.

Tipografi Büyük/Küçük Harf Durumu

ElementFormat öğesinin TypographicCase özelliği, büyük harf, küçük harf veya küçük büyük harfler gibi metnin büyük/küçük harf durumunu belirtir.

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

Metni döndürme

Bir metin bloğunu veya bir metin parçası içindeki glifleri 90° değerinde artışlarla döndürebilirsiniz. TextRotation sınıfı, hem metin bloğunun hem de glif dönüşünün ayarlanmasına yönelik şu sabitleri tanımlar:

Sabit

Değer

Açıklama

AUTO

“auto”

Saatin ters yönünde 90 derece dönüş belirtir. Genellikle yalnızca dönüş gerektiren glifleri döndürmek için dikey Asya metinleriyle kullanılır.

ROTATE_0

“rotate_0”

Dönüş olmadığını belirtir.

ROTATE_180

“rotate_180”

180 derece dönüş belirtir.

ROTATE_270

“rotate_270”

270 derece dönüş belirtir.

ROTATE_90

“rotate_90”

Saat yönünde 90 derece dönüş belirtir.

Bir metin bloğundaki metin satırlarını döndürmek için, metin satırını oluşturmak üzere TextBlock.createTextLine() yöntemini çağırmadan önce TextBlock.lineRotation özelliğini ayarlayın.

Metin bloğundaki veya parçadaki glifleri döndürmek için, ElementFormat.textRotation özelliğini, gliflerin döndürülmesini istediğiniz derece sayısına ayarlayın. Glif, bir karakteri veya birden çok gliften oluşan bir karakterin parçasını oluşturan şekildir. Örneğin, "a" harfi ve "i" harfinin üzerindeki nokta birer gliftir.

Satır içindeki karakterleri döndürmeden satırları dikey olacak şekilde döndürmek istediğiniz bazı Asya dillerinde gliflerin döndürülmesi mümkündür. Asya metinlerini döndürme hakkında daha fazla bilgi için, bkz. Doğu Asya metnini yaslama .

Aşağıda, Asya metinlerinde olduğu gibi, hem bir metin bloğunun hem de metin bloğundaki gliflerin döndürülmesine bir örnek verilmiştir. Bu örnekte bir Japonca font da kullanılmaktadır:

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 öğesini kilitleme ve klonlama

Bir ElementFormat nesnesi herhangi bir ContentElement türüne atandığında, buna ait locked özelliği otomatik olarak true değerine ayarlanır. Kilitli bir ElementFormat nesnesini değiştirmeyi denemek, bir IllegalOperationError atılmasına neden olur. En iyi uygulama, bu gibi bir nesneyi bir TextElement örneğine aramadan önce tam olarak tanımlamaktır.

Varolan bir ElementFormat örneğini değiştirmek istiyorsanız, ilk olarak locked özelliğini denetleyin. Değeri true ise, nesnenin kilitlenmemiş bir kopyasını oluşturmak için clone() yöntemini kullanın. Bu kilitlenmemiş nesnenin özellikleri değiştirilebilir ve daha sonra nesne TextElement örneğine atanabilir. Bundan oluşturulan yeni satırların tümü yeni biçimlendirmeye sahip olur. Söz konusu aynı nesneden oluşturulan ve eski biçimi kullanan önceki satırlar değiştirilmez.

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