TextEvent很有意思,就兩個常量,應用場景還截然不同。
TEXT_INPUT:使用者輸入文本時調用
此時: TextEvent.text:傳回使用者輸入的内容
還有一個類似的用法,是Event.Change。讓我們比較一下兩者的差別:
1. 觸發範圍不同
TEXT_INPUT:輸入文本時觸發。
CHANGE:文本字元發生變化時觸發。是以不僅輸入文本會觸發,删除文本也會觸發。
2. 觸發時間不同
TEXT_INPUT:在文本填充字元之前先觸發
CHANGE:在文本填充字元完成後觸發
我舉個例子大家就明白意思了:在舞台上建立一個輸入文本,執行個體名為t,在第一幀添加代碼如下:
function p1(event:Event):void {
trace(event.type+":"+event.target.text);
}
t.addEventListener(Event.CHANGE, p1);
function p2(event:TextEvent):void {
t.addEventListener(TextEvent.TEXT_INPUT, p2);
運作後,輸入字元“w”,傳回結果如下:
textInput: //此時t還沒有内容
change:w //此時t已經有内容了
最後說一下TextEvent.text的傳回值:
每輸入一次字元,将會調用一次函數。你直接輸入“my”,那麼依次傳回“m”“y”。你輸入“我們”,即使某些輸入法可以修改後一起輸入,但還是依次傳回“我”“們”。隻有一種情況例外:如果你是複制粘帖上去的“我們”,恭喜你,你終于一次性傳回了“我們”二字。
TEXT_LINK:啟用 HTML 的文本字段中,單擊超連結時觸發
此時:TextEvent.text:<a> 标簽的 href 屬性的 event 屬性的文本(很拗口吧 ^_^)
例如:
messages.htmlText = "<a href=\"event:http://www.baidu.com\">22</a>";
那麼TextEvent.text傳回的是“http://www.baidu.com”
注意:
1. 必須要有“event:”不然該監聽無效
2. 因為加了“event:”,是以超連結無效了,不會發生頁面跳轉。
如果一定要跳轉,自己加個處理吧,我把我的代碼貼出來,僅供參考:
messages.htmlText = "<a href=\"event:http://www.baidu.com\">百度連結</a>";
function p(event:TextEvent):void
{
var url:URLRequest = new URLRequest(event.text);
navigateToURL(url); //AS3.0後,GetURL方法不适用了
}
messages.addEventListener(TextEvent.LINK, p);
本文轉自 windtoto 51CTO部落格,原文連結:http://blog.51cto.com/windtoto/374249,如需轉載請自行聯系原作者