【问题标题】:show last 100 lines textArea AS3 Flash显示最后 100 行 textArea AS3 Flash
【发布时间】:2014-04-22 02:40:27
【问题描述】:

我有一个非常繁忙的聊天应用程序,并且 textArea 设置为在一定数量的文本后自行清除,但我想要在 textArea 中显示最后 100 行文本并删除其余文本。

使用 Flash CC

文本来自 Red5 服务器,如下所示:

function onReceiveMsg(UserName:String, Msg:String):void{
  if (myTextArea.length > 21400){
    myTextArea.htmlText = "";
  }

   //add text to textArea
   myTextArea.htmlText += "<font color='#FF0000'>"+UserName+": "+Msg"</font>";

}

那么,有什么想法可以保留最后 100 行聊天内容吗?谢谢! :-)

【问题讨论】:

    标签: actionscript-3 flash actionscript textarea chat


    【解决方案1】:

    我会简单地将您收到的所有消息存储在一个数组中:

    var messages:Array = [];
    
    function onReceiveMsg(userName:String, msg:String):void
    {
        messages.push({ userName: userName, msg: msg });
        displayMessages(); // See below.
    }
    

    并从中提取最后 0-100 个项目进行显示:

    function displayMessages():void
    {
        myTextArea.htmlText = "";
    
        var recent:Array = messages.slice(-100);
        for each(var i:Object in recent)
        {
            myTextArea.htmlText += "<font color='#FF0000'>" + i.userName + ": " + i.msg + "</font>";
        }
    }
    

    【讨论】:

    • 我试过了,但是新文本出现在 textArea 的顶部,新消息应该在底部...
    • 好的,我通过删除反向部分来解决这个问题,现在的问题是,当有 100 行时,新消息不会显示,只有前 100 行,它不会显示任何新消息消息...
    • @Alex reverse().slice(0, 100).reverse() 可能就是你想要的。
    • var recent:Array = messages.slice(0, 100);完成了这项工作,但是当数组有 100 条消息时,它不会添加新消息,也不会删除最旧的消息。
    • @Alex 对不起,试试.slice(-100) 没有任何reverse()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 2012-11-20
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多