Hoje vou mostrar como invocar métodos (funções) por links diretamente no HTMLText, usando a própria tag <a/> pela propriedade HREF.
Basicamente trata-se de um protocolo que colocamos no HREF para que o Flash Player dispare o evento, e não como um link para uma nova página. Disparando um TextEvent.LINK em seu TextField.
E nesse protocolo podemos passar valores para usarmos dentro do handler do evento.
1: <a href="event:valor genérico">link</a>
Por exemplo, podemos trocar a cor de um quadrado desenhado dinamicamente, baseado no link clicado. No valor do evento, passo a cor em hexadecial (0xFF0000) e recupero esse dado pela propriedade text do TextEvent.
1: package
2: {
3: import flash.display.Sprite;
4: import flash.events.TextEvent;
5: import flash.text.TextField;
6: import flash.text.TextFieldAutoSize;
7:
8: [SWF( width="490", height="200" )]
9:
10: /**
11: *
12: *
13: * @author Idemax Green
14: * www.idemax.net
15: * @idemax
16: *
17: */
18: public class HTMLTextASLink extends Sprite
19: {
20: public function HTMLTextASLink()
21: {
22: var meuCampoDeTexto:TextField = new TextField();
23:
24: meuCampoDeTexto.addEventListener( TextEvent.LINK, onTextLink );
25:
26: meuCampoDeTexto.autoSize = TextFieldAutoSize.LEFT;
27: meuCampoDeTexto.multiline = true;
28: meuCampoDeTexto.htmlText = 'Clique para colorir o quadrado.<br />Qual cor deseja? <a href="event:0xff0000"><b><u>Vermelho</u></b></a>, <a href="event:0x00ff33"><b><u>verde</u></b></a> ou <a href="event:0x0000ff"><b><u>azul</u></b></a>?';
29:
30: addChild( meuCampoDeTexto );
31: }
32:
33: protected function onTextLink( event:TextEvent ):void
34: {
35: graphics.clear();
36: graphics.beginFill( uint( event.text ));
37: graphics.drawRect( 10, 50, 100, 100 );
38: graphics.endFill();
39: }
40: }
41: }
Isso pode ser útil para vários fins, como navegar internamente nas aplicações, usar deep linking com Flash / Javascript, entre outros…