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