2

我做了一个简单的聊天应用程序,但我遇到了这个问题,文本区域会填满,然后用户必须清除它。我怎样才能做到,如果文本区域达到一定数量的字符,它将清除旧聊天文本 ?

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
        }
4

2 回答 2

0

在我看来,你应该处理行数而不是文本区域中的字符。

就像是 :

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 行,否则最旧的行将被删除。

于 2012-12-02T07:30:16.520 回答
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")
            }
}
于 2012-12-08T11:18:04.110 回答