Możliwe jest także odzwierciedlanie zdarzeń z bloku tekstowego lub części bloku tekstowego do obiektu wywołującego. Najpierw należy utworzyć instancję klasy EventDispatcher, a następnie przypisać ją do właściwości eventMirror instancji klasy TextElement. Jeśli blok tekstu składa się z pojedynczego elementu tekstowego, mechanizm tekstowy będzie odzwierciedlał zdarzenia dla całego bloku tekstu. Jeśli blok tekstu składa się z wielu elementów tekstowych, mechanizm tekstowy odzwierciedla zdarzenia tylko tych instancji klasy TextElement, które mają ustawioną właściwość eventMirror. Tekst w poniższym przykładzie składa się z trzech elementów: słowa "Click", słowa "here" i ciągu znaków "to see me in italic". W przykładzie tym obiekt wywołujący zdarzenia jest przypisywany do trzeciego elementu tekstowego, słowa "here", a następnie dodawany jest detektor zdarzeń, metoda clickHandler(). Metoda clickHandler() zmienia format tekstu na kursywę. Zastępuje ponadto treść trzeciego elementu tekstowego ciągiem znaków "Click here to see me in normal font!".
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);
}
}
}
Funkcje mouseOverHandler() i mouseOutHandler() zmieniają kształt wskaźnika myszy na wskaźnik przycisku, gdy znajduje się on nad słowem "here", oraz z powrotem na strzałkę, gdy nie znajduje się nad tym słowem.