2012-12-02 28 views
2

我做了一個簡單的聊天應用程序,但我有這個問題的文本區域將填滿和用戶將不得不然後清除它..我怎麼做到這一點,如果文本區域達到一定數量的字符它會清除舊的聊天文本?As3 textarea limit

public function receiveMsg(userName:String,type:String,msg:String,txtColor:String):void{ 
      if(type == "user"){ 
       ConsoleTxt.htmlText += "<b>"+userName+"</b>: <font color='"+txtColor+"'>"+msg+"</font> \n" 

      } 

      if(type == "server"){ 
       ConsoleTxt.htmlText += "<b><font color='#6ade57'>SERVER</font></b> "+userName+" "+msg+"\n" 
      } 

      if(type == "disconnect"){ 
       ConsoleTxt.htmlText += "<b><font color='#6ade57'>SERVER</font></b> "+userName+" <font color='#fc0000'>"+msg+"</font>\n" 

      } 

      ConsoleTxt.verticalScrollPosition = ConsoleTxt.maxVerticalScrollPosition 
     } 

回答

0

在我看來,你應該不是在textarea的字符的行&數工作。

喜歡的東西:

textarea.addEventListener(Event.CHANGE, changeHandler); 

var maxLines = 5; 

function changeHandler(event:Event):void { 

    if(textarea.numLines > maxLines) 

     textarea.text = textarea.text.substring(textarea.getLineLength(0)); 
} 

應確保總有最多5行的文本區域,否則最早的行被刪除。

+0

謝謝你,但由於某種原因我的textarea dos沒有屬性.numLines任何想法爲什麼?即時通訊使用flex是幫助 –

+0

可能是因爲它不是一個TLFTextField – korve

0

對於任何有同樣問題的人來說,解決了將所有數據設置爲數組集合的問題。

private var chatHolder:Array = new Array(); 

     public function receiveMsg(userName:String,type:String,msg:String,txtColor:String):void{ 
      for(var i:int = 0;i < chatHolder.length;i ++){ 

       if(i > 4){ 
        chatHolder.shift(); 
       } 
      } 

      if(type == "user"){  
       chatHolder.push("<b><a href='event:"+userName+"'>"+userName+"</a></b>: <font color='"+txtColor+"'>"+msg+"</font> \n") 
      } 
}