書き方としては「テキストフィールドのリンクから関数を呼び出す」というよりも、テキストのリンクのイベントを補足して、そのリスナーから関数を実行する形になります。
テキストフィールド「dispText」をステージに置いて、ドキュメントクラスに書いてみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
package { import flash.display.MovieClip; import flash.text.StyleSheet; import flash.events.TextEvent; public class Main extends MovieClip { public function Main() { // constructor code var str:String = String(new Date()); trace(str); var myCSS:StyleSheet = new StyleSheet(); myCSS.setStyle("a:link", {color:'#0000CC',textDecoration:'underline'}); myCSS.setStyle("a:hover", {color:'#0000FF',textDecoration:'none'}); dispText.styleSheet = myCSS; dispText.htmlText = "ためしに<a href='event:method_1'>リンク1</a>から関数が呼べるかを確認してみる。<a href='event:method_2'>リンク2</a>も<a href='event:method_3'>リンク3</a>もあるよ!"; dispText.addEventListener(TextEvent.LINK, linkHandler); } public function linkHandler(linkEvent:TextEvent):void { var tmpArray:Array; if(linkEvent.text){ tmpArray = linkEvent.text.split("_"); method(Number(tmpArray[1])); } } public function method(num:uint):void { trace(num,String(new Date())); } } } |
ハンドラのところは、どうやらswitch文などで振り分けるのが一般的みたいなのですが、普通の外部リンクを置く予定はないので、イベントに命名法則を持たせてコントロールするようにしてみました。