AS 3.0程序中對於文本的顯示控制是由TextField類完成的,其有兩種類型,由Type屬性來定義:如果type = TextFieldType.DYNAMIC,那麼這個文本框是用戶無法編輯的動態文本,這是默認值;如果type = TextFieldType.INPUT,那麼這個文本框是用戶可以編輯的輸入文本。
本節講TextField的htmlText屬性,可以直接將HTML格式的文本賦值給該屬性。HTML中的超鏈接必須以“event:”開頭,將超鏈接要發送的信息放置在它的後面,以字符串形式表現。這樣,當用戶單擊超鏈接時,會發出一個TextEvent事件TextEvent.LINK。"event:"後面的字符串信息會包括在這個事件對象的text屬性中,供監聽器使用。可以定製自己的字符串協議,讓字符串包含不同的行爲信息。以下代碼摘自《AS3殿堂之路》。
package
{
import flash.display.Sprite;
import flash.events.TextEvent;
import flash.net.URLRequest;
import flash.net.navigateToURL;
import flash.text.TextField;
public class TextLearn extends Sprite
{
private var _txt:TextField;
public function TextLearn()
{
_txt = new TextField();
_txt.width = 300;
_txt.wordWrap = true;
addChild(_txt);
_txt.htmlText =
"單擊<u><a href='event:geturl|http://www.budai.com/|_blank'>百度</a></u>在"+
"新窗口打開一個到www.baidu.com鏈接。<br/>"+
"單擊<u><a href='event:load|someswf.swf'>這兒</a></u>則是在Flash中加載一個動畫。<br/>"+
"單擊<u><a href='event:move|10'>這兒</a></u>則是將文本框移動10個像素";
_txt.addEventListener(TextEvent.LINK, clickLink);
trace(_txt.htmlText);
}
private function clickLink(evt:TextEvent):void
{
trace(evt.text);
var cmdArray:Array = evt.text.split("|");
trace(cmdArray);
switch(cmdArray[0])
{
case "geturl":
geturl(cmdArray[1], cmdArray[2]);
break;
case "load":
loadswf(cmdArray[1]);
break;
case "move":
movetxt(cmdArray[1]);
break;
default:
trace(cmdArray);
}
}
//在新窗口中打開超鏈接
private function geturl(url:String, target:String):void
{
var tmpRequest:URLRequest = new URLRequest(url);
navigateToURL(tmpRequest, target);
}
//加載SWF
private function loadswf(url:String):void
{
trace(url);
}
//移動文本框
private function movetxt(distance:Number):void
{
_txt.x += distance;
}
}
}