加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 04:57:29 所属栏目:百科 来源:网络整理
导读:******************************************************************************* 【原创文章,版本归AVSuper所有,转载请注明,谢谢】 ******************************************************************************* ? ? 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,跨平台,不用安装插件。。。

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读