FLEX+FMS实现远程共享、电子白板、远程交流会议的功能

*******************************************************************************
【原创文章,版本归AVSuper所有,转载请注明,谢谢】

*******************************************************************************

    FMS提供了“远程共享对象”的功能,可以让多个Client端的flash应用共享同一个全局对象,并且当客户端中的任何一个改变该对象时,系统会自动将该对象回发到FMS服务器,同时FMS服务器也会将该对象重新广播到所有客户端。
    可能有些人还是不理解这个含义,举个例子来说,视频会议软件里面通常有个共享电子白板(WhiteBoard)的功能,就是A在画板上所画的线,B在他的电脑上面也可以看到。传统的实现方法,是A画图的操作通过网络传送给B,双方各自调用画图的代码。程序实现还是相对比较复杂。
    描述得更简单一些,就是说,如果在三个电脑上不同的人浏览同一个页面,那么任何一个人在这个flash上面所做的操作,将在另外两个人的电脑上同步展现。这个的用途很广泛了,像视频会议(主席调用PPT、画面,参会者都能同步看到)、电子教室(老师做演示,学生机同步刷新)、互动游戏(多个不同的角色可以操作同一个对象),等等。
    通过FLEX+FMS,利用FMS的远程共享对象,这个功能实现起来相当简单。
    首先,在FMS的Application文件夹下,创建一个SharedObjectApp的文件夹,把live文件夹下面的那些默认文件复制过来,注意!这里必须要修改一个文件才行,默认的配置是未启用远程共享的!!很多人都是折腾半天发现不能共享,不是代码的问题,是这里设置的问题。至于如何设置,这里就不说了,卖个关子,呵呵。。。。。
    然后,在FLEX代码中,创建连接:

private function InitApp():void
{  
nc=new NetConnection;  
nc.connect("rtmp://192.168.0.100/SharedObjectApp");  
nc.addEventListener(NetStatusEvent.NET_STATUS,operateShareObject);  
}  

private function operateShareObject(evt:NetStatusEvent):void
{  
isConnectSuccess=(evt.info.code=="NetConnection.Connect.Success");  
if(isConnectSuccess)
{  
shareObject=SharedObject.getRemote("ShareTest", nc.uri, false);  
shareObject.connect(nc);  
shareObject.addEventListener(SyncEvent.SYNC,detectSO);  
}  
}  

private function detectSO(e:SyncEvent):void
{  
for(var chng:uint;chng<e.changeList.length;chng++)
{  
switch(e.changeList[chng].code)
{  
case "change":  
updateAllClientMsg();  
break;  
default:  
break;  
}  
}  
}  
     
private function updateAllClientMsg():void
{
memo1.text+=shareObject.data.msg+"\n";  //这是文字信息的共享
}
  

  完整的代码很多地方都能找到,就不贴了,有需要的找我吧。解释一下,每个客户端需要调用类似下面的代码来通知服务器更新数据:

    shareObject.setProperty("msg", msgText.text); 

shareObject.data.msg这里的msg就是所更新的属性,你可以根据自己的需要随便定义,setProperty的第二个参数是msg对应的数据。

在共享画图的时候,我们在鼠标按下时开始在本地画面、鼠标移动时继续画并记录坐标数据,鼠标抬起时本地画图完成,同时调用setProperty将线条粗细、颜色、透明度等信息以及所有坐标数据传递给服务器,在上面的updateAllClientMsg里面根据这些数据画图,就可以更新到所有客户端,实现共享画图了。

我对FLEX也是刚学,每天太忙也没时间去仔细研究,只以这几天了解的来看,FLEX+FMS的功能真的很强大,

以前抓耳挠腮要写很多代码实现的功能,现在都轻而易举实现,

而且,而且,而且。。。支持BS,跨平台,不用安装插件。。。

对于那些希望快速形成自己的流媒体应用软件的人来说,真应该好好研究研究一下啊!

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值