[]分享:简单聊天室

实现效果如下:

111.png

主要实现代码如下:
package view
{
import laya.events.Event;
import laya.utils.Browser;

import ui.test.HtmlPageUI;

public class HtmlView1 extends HtmlPageUI
{
private var str:String;
private var str2:String;
private var isSend:Boolean=false;
public function HtmlView1()
{
super();
// 文本样式一
str="<span color='blue' style=' font" +
":18px 华文琥珀' href='http://ask.layabox.com'>LayaBox</span>" +
"<span color='white' style=' font:18px 华文琥珀'>邀请</span>" +
"<span color='yellow' style=' font:18px 华文琥珀'>大家</span>" +
"<span color='white' style=' font:18px 华文琥珀'>加入</span>" +
"<span color='orange' style=' font:18px 华文琥珀' href='http://www.baidu.com'>LayaAir引擎</span>" +
"<span color='white' style=' font:18px 华文琥珀'>聊天室</span><br/>";
// 文本样式二
str2="<span color='pink' style=' font:18px 华文琥珀' href='http://ask.layabox.com'>LayaBox</span>" +
"<span color='purple' style=' font:18px 华文琥珀'>邀请</span>" +
"<span color='black' style=' font:18px 华文琥珀'>大家</span>" +
"<span color='blue' style=' font:18px 华文琥珀'>加入</span>" +
"<span color='red' style=' font:18px 华文琥珀' href='http://www.baidu.com'>LayaAir引擎</span>" +
"<span color='yellow' style=' font:18px 华文琥珀'>聊天室</span><br/>";
// 添加超链接跳转
my_html.on(Event.LINK,this,onLink);
// 点击btn1
send_btn.on(Event.CLICK,this,onSendClick);
// 点击btn2
send_btn1.on(Event.CLICK,this,onSendClick1);
// enter键发送默认字体或输入框内字体
Laya.stage.on(Event.KEY_DOWN,this,onKeyDown);
}

private function onKeyDown(e:Event):void
{
// 当按下enter健自动发送文字
if(e.keyCode==13)
{
change(str);
}
}
// 发送文字样式二,如果input有值的话,发送input的内容
private function onSendClick1():void
{
change(str2);
}
// 发送文字样式一,如果input有值的话,发送input的内容
private function onSendClick():void
{
change(str);
}
// 主要逻辑
public function change(str:String):void
{
// 当文本没有值的时候,发送默认文本str和str2,否则发送input的文本内容
if(my_input.text!="")
{
my_html.appendHTML(my_input.text+"<br/>");
}
else
{
my_html.appendHTML(str);
isSend=true;
}
// 判断是否已经发送了input的文本,如果发送了,将input的text清null,方便下次输入
if(isSend)
{
my_input.text="";
}
// 根据my_html追加的文本,动态修改my_html组件的高度,并刷新panel,让panel滚动条随之改变
my_html.height=my_html.contextHeight;
my_panel.refresh();

// panel滚动条永远位于最下方,显示最后输入的文本
my_panel.vScrollBar.value=my_panel.vScrollBar.max;

// 设置my_html文本高度的上限值,超出上限值,将旧的文本移除,添加新的文本内容
var value:Number=380;
if(my_html.contextHeight>=value)
{
//这里简单写了,实际上是str的标签个数,开发者可以自己遍历str的标签个数,进行移除处理
// 我们的str有6个span,一个br,所以一共是7个
my_html.removeChildren(0,7);
}
}
// 跳转
private function onLink(data:*):void
{
Browser.window.location.href=data;
}
}
}
有兴趣的朋友可以下载附件,进行参考
已邀请:

layabox

赞同来自:

感谢分享

137*****640

赞同来自:

如果是图文混排,my_html的实际高度怎么获取

cuixueying

赞同来自:

请使用my_html.contextWidth/my_html.contextHeight获取文本的实际高度

要回复问题请先

商务合作
商务合作