天天看點

常用事件方法及技巧(四) -- TextEvent(文本事件)(改)

   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,如需轉載請自行聯系原作者

繼續閱讀