|
-->
建立会议的时候有两种模式, 发言模式 和 论坛模式 发言模式是指,只有一个人可以发言,由主持人控制。其他人可以向主持人申请发言。 论坛模式是指,所有人都可以自由发言,但主持人可以控制,禁止发言。 主持人可以把非会议参加人请出会议室。 一般用户可以除了主持人屏蔽任何用户的发言(声音和文字),屏蔽视频图像
实现: 判断会议模式 为发言模式时,
shareobjects.send("stopPhone",null); //在所有客户端执行stopPhone,禁用所有用户的Mic。
为论坛模式
shareobjects.send("activePhone",null); //在所有客户端执行stopPhone,启用用所有用户的Mic。
当主持人在参加会议人员的列表上,选中用户时,右键弹出操作菜单,请出会议室 | 给麦克风(会议模式)/(禁止发言,论坛模式) 请出会议室:
function kickout() { nc.call("SendAction",null,"/kick "+selectusername); //调用服务端函数SendAction }
给麦克风:
function GivePhone (){ //选出 //GivePhone的对象和当前用户一致,则给麦克风否则不给 //选中的用户等于当前用户 if(_root.peoplelist_mc.people_lb.selectedItem.data.userName==user.userName) { _root.users_so.send("activePhone",null,user.userName); } else { _root.users_so.send("stopPhone",null,user.userName); } } this.users_so.stopPhone=function(username) { trace("管理员把话筒移交给"+username); } this.users_so.activePhone=function(username) { trace("管理员把话筒移交给你"); }
服务端函数SendAction
FCPeopleList.prototype.SendAction = function(client,mesg) { var cglobal = this.getClientGlobalStorage(client); //语法格式 SendAction("/kick username") if (mesg.substr(0,5) == "/kick") { trace("kick called!"); var usernameToKick = mesg.substr(mesg.indexOf(" ")+1); for (var i=0; i<application.clients.length; i++) { if (application.clients.user.userName == usernameToKick) { trace("disconnecting "+application.clients.user); //在屏幕上显示某人被请出会议室,原因是... var clocal = this.getClientGlobalStorage(application.clients); application.disconnect(application.clients); this.users_so.setProperty(clocal.id, null); this.releaseLocalStorage(application.clients); //把此用户从系列相关的东西中干掉 break; } } return; } /*
//在管理员的SWF那边搞个
TiRen = function(USERNAME){ CONN = new NetConnection(); CONN.Call("TR",null,USERNAME); }
//服务器端main.asc在
application.OnConnect = function(newclient){ newclient.TR = function(USERNAME){ application.disconnect( SELECTClient(USERNAME) ); } } //根据USERNAME找到client对象 SELECTClient(USERNAME){ return Client对象; } //============ //这样的话,你只要在客户端想踢谁就踢谁了。
只要调用一下TiRen(被提的人的USERNAME)
|