Darüber hinaus können Sie Ereignisse in einem Textblock oder einem Teil eines Textblocks auf einem Ereignis-Dispatcher spiegeln. Erstellen Sie hierzu zunächst eine EventDispatcher-Instanz, und weisen Sie der Eigenschaft
eventMirror
einer TextElement-Instanz diese Instanz zu. Wenn der Textblock aus einem einzelnen Textelement besteht, spiegelt die Flash Text Engine Ereignisse für den gesamten Block. Besteht der Block aus mehreren Textelementen, spiegelt die Flash Text Engine Ereignisse nur für die TextElement-Instanzen, bei denen die Eigenschaft
eventMirror
festgelegt ist. Der Text im folgenden Beispiel besteht aus drei Elementen: dem Wort „Click“, dem Wort „here“ und dem String „to see me in italic“. In dem Beispiel wird dem zweiten Textelement, dem Wort „here“, ein Ereignis-Dispatcher zugewiesen, und es wird ein Ereignis-Listener, die Methode
clickHandler()
, hinzugefügt. Die
clickHandler()
-Methode ändert die Formatierung des Textes in kursiv. Darüber hinaus wird der Inhalt des dritten Textelements in „Click here to see me in normal font!“ geändert.
package
{
import flash.text.engine.*;
import flash.ui.Mouse;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.EventDispatcher;
public class EventMirrorExample extends Sprite
{
var fontDescription:FontDescription = new FontDescription("Helvetica", "bold");
var format:ElementFormat = new ElementFormat(fontDescription, 18);
var textElement1 = new TextElement("Click ", format);
var textElement2 = new TextElement("here ", format);
var textElement3 = new TextElement("to see me in italic! ", format);
var textBlock:TextBlock = new TextBlock();
public function EventMirrorExample()
{
var myEvent:EventDispatcher = new EventDispatcher();
myEvent.addEventListener("click", clickHandler);
myEvent.addEventListener("mouseOut", mouseOutHandler);
myEvent.addEventListener("mouseOver", mouseOverHandler);
textElement2.eventMirror=myEvent;
var groupVector:Vector.<ContentElement> = new Vector.<ContentElement>;
groupVector.push(textElement1, textElement2, textElement3);
var groupElement:GroupElement = new GroupElement(groupVector);
textBlock.content = groupElement;
createLines(textBlock);
}
private function clickHandler(event:MouseEvent):void
{
var newFont:FontDescription = new FontDescription();
newFont.fontWeight = "bold";
var newFormat:ElementFormat = new ElementFormat();
newFormat.fontSize = 18;
if(textElement3.text == "to see me in italic! ") {
newFont.fontPosture = FontPosture.ITALIC;
textElement3.replaceText(0,21, "to see me in normal font! ");
}
else {
newFont.fontPosture = FontPosture.NORMAL;
textElement3.replaceText(0, 26, "to see me in italic! ");
}
newFormat.fontDescription = newFont;
textElement1.elementFormat = newFormat;
textElement2.elementFormat = newFormat;
textElement3.elementFormat = newFormat;
createLines(textBlock);
}
private function mouseOverHandler(event:MouseEvent):void
{
Mouse.cursor = "button";
}
private function mouseOutHandler(event:MouseEvent):void
{
Mouse.cursor = "arrow";
}
private function createLines(textBlock:TextBlock):void
{
if(textBlock.firstLine)
removeChild (textBlock.firstLine);
var textLine:TextLine = textBlock.createTextLine (null, 300);
textLine.x = 15;
textLine.y = 20;
addChild (textLine);
}
}
}
Die Funktionen
mouseOverHandler()
und
mouseOutHandler()
ändern den Cursor in einen Schaltflächen-Cursor, sobald sich dieser über dem Wort „here“ befindet, und zurück in einen Pfeil, wenn sich der Cursor über anderem Text befindet.