fms 教程 聊天的实现

fms实现聊天有很多种办法,主要用到SharedObject,今天就讲一下SharedObject实现聊天的方法:
SharedObject最奇妙的地方就在于,只要它发生了变化,那么所有连接到它的客户端都会收到消息,做出反应,这个动作必须在客户端的onSync里面来完成。

方法1、通过给SharedObject 赋值:

到applications 目录新建一个文件夹为chat,不需要写main.asc

在场景上放置两个文本框,一个是输入文本、动态文本、以及一个按钮

分别命名为:input_txt  output_txt  chat_btn 自己摆放位置。

//code begin

//code begin
var nc:NetConnection = new NetConnection()
nc.onStatus = function(info){
    trace(info.code)
}
nc.connect("rtmp:/chat","lulu");

var chat_so:SharedObject  =SharedObject.getRemote("chat", nc.uri, false);
//监测函数
chat_so.onSync = function(){
//只要发生变化,就读取data并在output_txt 现实
 if(this.data.text == undefined){
  this.data.text = "";
 }else{
   _root.output_txt.text = this.data.text;
 }
}
chat_so.connect(nc)
chat_btn.onRelease = function(){
 _root.chat_so.data.text += _root.input_txt.text+"/n";
 _root.input_txt.text = "";
}
//code end

ctrl + enter 试试吧。。

如果把红色的false,改为true,下一次连接到服务器可以看到之前的聊天记录,试试吧。。
ps:客户端如果想在so里面写入属性一定要chat_so.data的方式才能往里面赋值。这里的data就等同于服务器端的chat_so.
范例就是通过往里面写入属性text来实现保存聊天记录的。

困了,下一种方法明晚再写。。。踢会足球先。。不是游戏哦

200706042222540824.rar

 

教程4所用的方法是在sharedobject里面写入属性,发生改变后,然后所有客户端同步从而实现文字聊天的。
这一讲我说一种更加简单的实现办法:利用sharedobject.send来实现。

同样在applications目录下建立一个文件夹chat,不需要写创建main.asc

在场景上放置两个文本框,一个是输入文本、动态文本、以及一个按钮

分别命名为:input_txt  output_txt  chat_btn 自己摆放位置。

//code begin
var nc:NetConnection = new NetConnection()
nc.onStatus = function(info){
    trace(info.code)
}
nc.connect("rtmp:/chat","lulu");
var chat_so:SharedObject  =SharedObject.getRemote("chat", nc.uri, false);
//不需要onSync 函数了,因为chat_so的data不会发生改变了
chat_so.connect(nc)
chat_so.showChat = function(txt:String){
        _root.output_txt.text += txt+"/n";
}

chat_btn.onRelease = function(){
//这里用到了send方法,注意这里的showChat就是上面定义的showChat函数,后面的是传递的参数,可传递多个参数。
 _root.chat_so.send("showChat", _root.input_txt.text);
 _root.input_txt.text = "";
}
//code end

ctrl + enter 。。。。。
这种方法和第一讲的方法的主要区别在哪里呢?
1、第一种方法可以记录聊天信息,第二种不可以
2、第一种方法的通讯量比较大,每次都要将全部信息读到本地,第二种则很小
3、第二种更加灵活,用户可以删除自己的聊天区域的记录,如果是第一种办法,则只能由有管理权限的人来删除so.data,所有的用户端就看不到信息了,因为此时的so.data.text = "";

踢球了。。
明天讲一下netstream的主要用法,以及时下比较流行的视频点播、直播。

附上源文件

200706052111551816.fla

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值