建立会议的时候有两种模式, 发言模式 和 论坛模式
发言模式是指,只有一个人可以发言,由主持人控制。其他人可以向主持人申请发言。
论坛模式是指,所有人都可以自由发言,但主持人可以控制,禁止发言。
主持人可以把非会议参加人请出会议室。
一般用户可以除了主持人屏蔽任何用户的发言(声音和文字),屏蔽视频图像
实现:
判断会议模式
为发言模式时,
shareobjects.send("stopPhone",null);//在所有客户端执行stopPhone,禁用所有用户的Mic。
为论坛模式
shareobjects.send("activePhone",null);//在所有客户端执行stopPhone,启用用所有用户的Mic。
当主持人在参加会议人员的列表上,选中用户时,右键弹出操作菜单,请出会议室 | 给麦克风(会议模式)/(禁止发言,论坛模式)
请出会议室:
functionkickout()
{
nc.call("SendAction",null,"/kick"+selectusername);//调用服务端函数SendAction
}
给麦克风:
functionGivePhone(){
//选出//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){
varcglobal=this.getClientGlobalStorage(client);
//语法格式SendAction("/kickusername")
if(mesg.substr(0,5)=="/kick"){
trace("kickcalled!");
varusernameToKick=mesg.substr(mesg.indexOf("")+1);
for(vari=0;i<application.clients.length;i++){
if(application.clients.user.userName==usernameToKick){
trace("disconnecting"+application.clients.user);
//在屏幕上显示某人被请出会议室,原因是...
varclocal=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=newNetConnection();
CONN.Call("TR",null,USERNAME);
}
//服务器端main.asc在
application.OnConnect=function(newclient){
newclient.TR=function(USERNAME){
application.disconnect(SELECTClient(USERNAME));
}
}
//根据USERNAME找到client对象
SELECTClient(USERNAME){
returnClient对象;
}
//============
//这样的话,你只要在客户端想踢谁就踢谁了。
只要调用一下TiRen(被提的人的USERNAME)