Flash Metin Motoru'nu oluşturan sınıflar, metin oluşturmanıza, biçimlendirmenize ve denetlemenize olanak sağlar. Aşağıdaki sınıflar, Flash Metin Motoru ile metin oluşturmak ve görüntülemek için temel bina bloklarıdır:
-
TextElement/GraphicElement/GroupElement - bir TextBlock örneğinin içeriğini içerir
-
ElementFormat - bir TextBlock örneğinin içeriği için biçimlendirme niteliklerini belirtir
-
TextBlock - bir metin paragrafı oluşturmak için kullanılan fabrika
-
TextLine - TextBlock'tan oluşturulan bir metin satırı
Metni görüntülemek için, biçimlendirme karakteristiklerini belirleme amacıyla bir ElementFormat nesnesi kullanarak bir Dizeden bir TextElement nesnesi oluşturun. TextElement öğesini bir TextBlock nesnesinin
içerik
özelliğine atayın.
TextBlock.createTextLine()
yöntemini çağırarak görüntülenecek metnin satırlarını oluşturun.
createTextLine()
yöntemi, belirlenen genişliğe sığabilecek Dize miktarını içeren TextLine nesnesini geri getirir. Yöntemi dizenin tamamı satırlar halinde olacak şekilde biçimlendirilene kadar çağırın. Oluşturulacak satır kalmadığında, TextBlock nesnesinin textLineCreationResult özelliği
TextLineCreationResult.COMPLETE
değerine atanır. Satırları göstermek için, onları görüntüleme listesine ekleyin (uygun
x
ve
y
konum değerleriyle).
Örneğin aşağıdaki kod, varsayılan biçim ve font değerleriyle "Hello World! This is Flash Text Engine!" metnini görüntülemek için bu FTE sınıflarını kullanır. Bu basit örnekte, yalnızca tek bir metin satırı oluşturulur.
package
{
import flash.text.engine.*;
import flash.display.Sprite;
public class HelloWorldExample extends Sprite
{
public function HelloWorldExample()
{
var str = "Hello World! This is Flash Text Engine!";
var format:ElementFormat = new ElementFormat();
var textElement:TextElement = new TextElement(str, format);
var textBlock:TextBlock = new TextBlock();
textBlock.content = textElement;
var textLine1:TextLine = textBlock.createTextLine(null, 300);
addChild(textLine1);
textLine1.x = 30;
textLine1.y = 30;
}
}
}
createTextLine()
parametreleri, yeni satırın başlayacağı satırı ve piksel cinsinden satırın genişliğini belirtir. Yeni satırın başlayacağı satır genellikle önceki satırdır, ancak ilk satır söz konusu olduğunda bu
null
olacaktır.
GraphicElement ve GroupElement nesneleri ekleme
Bir görüntü veya grafik öğe görüntülemek amacıyla TextBlock nesnesine bir GraphicElement nesnesi atayabilirsiniz. Bir grafik veya görüntüden GraphicElement sınıfının bir örneğini oluşturmanız ve örneği
TextBlock.content
özelliğine atamanız yeterlidir. Normalde yaptığınız gibi
TextBlock.createTextline()
öğesini çağırarak metin satırını oluşturun. Aşağıdaki örnek, biri bir GraphicElement nesnesi, diğeri ise bir TextElement nesnesi içeren iki metin satırı oluşturur.
package
{
import flash.text.engine.*;
import flash.display.Sprite;
import flash.display.Shape;
import flash.display.Graphics;
public class GraphicElementExample extends Sprite
{
public function GraphicElementExample()
{
var str:String = "Beware of Dog!";
var triangle:Shape = new Shape();
triangle.graphics.beginFill(0xFF0000, 1);
triangle.graphics.lineStyle(3);
triangle.graphics.moveTo(30, 0);
triangle.graphics.lineTo(60, 50);
triangle.graphics.lineTo(0, 50);
triangle.graphics.lineTo(30, 0);
triangle.graphics.endFill();
var format:ElementFormat = new ElementFormat();
format.fontSize = 20;
var graphicElement:GraphicElement = new GraphicElement(triangle, triangle.width, triangle.height, format);
var textBlock:TextBlock = new TextBlock();
textBlock.content = graphicElement;
var textLine1:TextLine = textBlock.createTextLine(null, triangle.width);
textLine1.x = 50;
textLine1.y = 110;
addChild(textLine1);
var textElement:TextElement = new TextElement(str, format);
textBlock.content = textElement;
var textLine2 = textBlock.createTextLine(null, 300);
addChild(textLine2);
textLine2.x = textLine1.x - 30;
textLine2.y = textLine1.y + 15;
}
}
}
TextElement, GraphicElement ve diğer GroupElement nesnelerinden bir grup oluşturmak için bir GroupElement nesnesi oluşturabilirsiniz. Bir GroupElement, bir TextBlock nesnesinin
içerik
özelliğine atanabilir.
GroupElement()
yapıcısının parametresi, metne, grafiğe ve grubu oluşturan grup öğelerine işaret eden bir Vektördür. Aşağıdaki örnek, iki grafik öğesini ve bir metin öğesini gruplandırır ve bunları bir birim olarak metin bloğuna atar.
package
{
import flash.text.engine.*;
import flash.display.Sprite;
import flash.display.Shape;
import flash.display.Graphics;
public class GroupElementExample extends Sprite
{
public function GroupElementExample()
{
var str:String = "Beware of Alligators!";
var triangle1:Shape = new Shape();
triangle1.graphics.beginFill(0xFF0000, 1);
triangle1.graphics.lineStyle(3);
triangle1.graphics.moveTo(30, 0);
triangle1.graphics.lineTo(60, 50);
triangle1.graphics.lineTo(0, 50);
triangle1.graphics.lineTo(30, 0);
triangle1.graphics.endFill();
var triangle2:Shape = new Shape();
triangle2.graphics.beginFill(0xFF0000, 1);
triangle2.graphics.lineStyle(3);
triangle2.graphics.moveTo(30, 0);
triangle2.graphics.lineTo(60, 50);
triangle2.graphics.lineTo(0, 50);
triangle2.graphics.lineTo(30, 0);
triangle2.graphics.endFill();
var format:ElementFormat = new ElementFormat();
format.fontSize = 20;
var graphicElement1:GraphicElement = new GraphicElement(triangle1, triangle1.width, triangle1.height, format);
var textElement:TextElement = new TextElement(str, format);
var graphicElement2:GraphicElement = new GraphicElement(triangle2, triangle2.width, triangle2.height, format);
var groupVector:Vector.<ContentElement> = new Vector.<ContentElement>();
groupVector.push(graphicElement1, textElement, graphicElement2);
var groupElement = new GroupElement(groupVector);
var textBlock:TextBlock = new TextBlock();
textBlock.content = groupElement;
var textLine:TextLine = textBlock.createTextLine(null, 800);
addChild(textLine);
textLine.x = 100;
textLine.y = 200;
}
}
}
Metni değiştirme
Bir TextBlock örneğindeki metni,
TextBlock.content
özelliğine atadığınız TextElement öğesindeki metni değiştirmek için
TextElement.replaceText()
öğesini çağırarak değiştirebilirsiniz.
Aşağıdaki örnek, satırın başlangıcına ilk olarak satırın başına metin eklemek, sonra satırın sonuna metin eklemek ve son olarak satırın ortasındaki metni değiştirmek için
replaceText()
öğesini kullanır.
package
{
import flash.text.engine.*;
import flash.display.Sprite;
public class ReplaceTextExample extends Sprite
{
public function ReplaceTextExample()
{
var str:String = "Lorem ipsum dolor sit amet";
var fontDescription:FontDescription = new FontDescription("Arial");
var format:ElementFormat = new ElementFormat(fontDescription);
format.fontSize = 14;
var textElement:TextElement = new TextElement(str, format);
var textBlock:TextBlock = new TextBlock();
textBlock.content = textElement;
createLine(textBlock, 10);
textElement.replaceText(0, 0, "A text fragment: ");
createLine(textBlock, 30);
textElement.replaceText(43, 43, "...");
createLine(textBlock, 50);
textElement.replaceText(23, 28, "(ipsum)");
createLine(textBlock, 70);
}
function createLine(textBlock:TextBlock, y:Number):void {
var textLine:TextLine = textBlock.createTextLine(null, 300);
textLine.x = 10;
textLine.y = y;
addChild(textLine);
}
}
}
replaceText()
yöntemi,
beginIndex
ve
endIndex
parametrelerinin belirttiği metni,
newText
parametresinin belirttiği metinle değiştirir.
beginIndex
ve
endIndex
parametrelerinin değerleri aynıysa,
replaceText()
belirtilen metni bu konuma ekler. Aksi takdirde,
beginIndex
ve
endIndex
parametrelerinin belirttiği karakterleri yeni metinle değiştirir.
|
|
|