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 {
trace(event.type+":"+event.target.text);
}
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);
本文出自 “寂寞風之谷” 博客,請務必保留此出處http://windtoto.blog.51cto.com/1986737/374249