Met de klassen waaruit de Flash Text Engine bestaat, kunt u tekst maken, opmaken en besturen. De volgende klassen vormen de elementaire bouwstenen voor het maken en weergeven van tekst met de Flash Text Engine:
-
TextElement/GraphicElement/GroupElement: deze bevatten de inhoud van een TextBlock-instantie
-
ElementFormat: hiermee worden opmaakkenmerken aangegeven voor de inhoud van een TextBlock-instantie
-
TextBlock: de plaats waar een alinea tekst wordt opgebouwd
-
TextLine: een regel tekst die is gemaakt van het TextBlock
Als u tekst wilt weergeven, maakt u een TextElement-object van een String met behulp van een ElementFormat-object om de opmaakkenmerken te definiëren. Vervolgens wijst u het TextElement-object toe aan de eigenschap
content
van een TextBlock-object. Maak de regels tekst die moeten worden weergegeven door de methode
TextBlock.createTextLine()
aan te roepen. De methode
createTextLine()
retourneert een TextLine-object dat het deel van de tekenreeks bevat dat in de opgegeven breedte past. Roep de methode herhaaldelijk aan totdat de volledige tekenreeks in de regels past. Wanneer er geen regels meer moeten worden gemaakt, wordt de waarde
TextLineCreationResult.COMPLETE
toegewezen aan de eigenschap textLineCreationResult van het TextBlock-object. Als u de regels wilt weergeven, voegt u deze toe aan de weergave lijst (met bijbehorende positiewaarden
x
en
y
).
In de volgende code worden bijvoorbeeld deze FTE-klassen gebruikt om 'Hello World! This is Flash Text Engine!" weer te geven, met standaardopmaak en -lettertypewaarden. In dit eenvoudige voorbeeld wordt slechts één tekstregel gemaakt.
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;
}
}
}
De parameters voor
createTextLine()
geven de regel op waarvan de nieuwe regel moet beginnen en de breedte van de regel in pixels. De regel waarvan de nieuwe regel moet beginnen is doorgaans de vorige regel, maar in het geval van de eerste regel is dit
null
.
GraphicElement- en GroupElement-objecten toevoegen
U kunt een GraphicElement-object toewijzen aan een TextBlock-object om een afbeelding of een grafisch element weer te geven. Maak eenvoudigweg een instantie van de klasse GraphicElement vanuit een afbeelding en wijs de instantie toe aan de eigenschap
TextBlock.content
. Maak de tekstregel door
TextBlock.createTextline()
aan te roepen zoals u normaal zou doen. In het volgende voorbeeld worden twee tekstregels gemaakt: één met een GraphicElement-object en één met een TextElement-object.
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;
}
}
}
U kunt een GroupElement-object maken om een groep te maken van TextElement-, GraphicElement- en andere GroupElement-objecten. U kunt een GroupElement toewijzen aan de eigenschap
content
van een TextBlock-object. De parameter voor de constructor
GroupElement()
is een vector, die wijst naar de tekst, afbeelding en groepselementen die de groep uitmaken. In het volgende voorbeeld worden twee grafische elementen en een tekstelement gegroepeerd en worden deze als eenheid toegewezen aan een tekstblok.
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;
}
}
}
Tekst vervangen
U kunt tekst in een TextBlock-instantie vervangen door
TextElement.replaceText()
aan te roepen om tekst te vervangen in het TextElement dat u hebt toegewezen aan de eigenschap
TextBlock.content
.
In het volgende voorbeeld wordt
replaceText()
gebruikt om tekst aan het begin van de regel in te voegen, tekst aan het einde van de regel toe te voegen en tekst in het midden van de regel te vervangen.
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);
}
}
}
Met de methode
replaceText()
vervangt u tekst die is opgegeven in de parameters
beginIndex
en
endIndex
door de tekst die is aangegeven door de paramater
newText
. Als de waarden van de parameters
beginIndex
en
endIndex
hetzelfde zijn, voegt
replaceText()
de opgegeven tekst in op die locatie. Anders worden de tekens die worden aangegeven met
beginIndex
en
endIndex
vervangen door de nieuwe tekst.
|
|
|