AS3 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 { 
        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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章