As3 textarea限制

时间:2012-12-02 06:53:08

标签: actionscript-3 flash flex

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

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
        }

2 个答案:

答案 0 :(得分:0)

在我看来,你应该研究多少行&amp;不是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));
}

应确保textarea中最多有5行,否则最旧的行将被删除。

答案 1 :(得分: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")
            }
}