Также события в текстовом блоке или в его части можно дублировать в диспетчере событий. Сначала создайте экземпляр EventDispatcher и назначьте его свойству
eventMirror
экземпляра TextElement. Если текстовый блок состоит из одного текстового элемента, то текстовый сервер дублирует события для всего текстового блока. Если текстовый блок содержит несколько текстовых элементов, то текстовый сервер дублирует события только для тех экземпляров TextElement, для которых задано свойство
eventMirror
. В следующем примере текст содержит три элемента: слово Click («щелкните»), слово here («здесь») и строку to see me in italic («для использования курсива»). Второму текстовому элементу, слову here, назначается диспетчер событий и добавляется прослушиватель событий, метод
clickHandler()
. Метод
clickHandler()
выделяет текст курсивом. Кроме того, он меняет содержимое третьего текстового элемента на строку 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);
}
}
}
Функции
mouseOverHandler()
и
mouseOutHandler()
меняют курсор «стрелка» на курсор «кнопка», когда он наведен на слово here и возвращают ему прежний вид, когда он покидает область этого элемента.