第75篇一对多之合并开关声音按钮及获取当前按钮id及一个按钮控制两个函数
来源:互联网 发布:课堂教学互动软件 编辑:程序博客网 时间:2024/04/29 15:11
关键词:合并开关声音按钮,获取当前按钮id,一个按钮控制两个函数
一、合并开关声音按钮
1.1 测试平台--本地服务器运行平台
老师端:带老师名字
https://localhost:9101/demos/index.html?roomid=888&t=600&&teaNameMobile=莫言
学生一:
https://localhost:9101/demos/student.html?studentId=1001&stuNameMobile=张三丰&t=600#888
学生二:带学生中文名字
https://localhost:9101/demos/student.html?studentId=1002&stuNameMobile=白子画&t=600#888
学生三:带学生英文名字
https://localhost:9101/demos/student.html?studentId=1003&stuNameMobile=司马南&t=600#888
1.1 测试平台--本地服务器运行平台
老师端:带老师名字
https://123.57.206.36:9101/demos/index.html?roomid=888&t=600&&teaNameMobile=莫言
学生一:
https://123.57.206.36:9101/demos/student.html?studentId=1001&stuNameMobile=张三丰&t=600#888
学生二:带学生中文名字
https://123.57.206.36:9101/demos/student.html?studentId=1002&stuNameMobile=白子画&t=600#888
学生三:带学生英文名字
https://123.57.206.36:9101/demos/student.html?studentId=1003&stuNameMobile=司马南&t=600#888
1.2 合并开声音关声音按钮
1)追加控制面版(私有白板+声音)
描述:之前追加时,点击之后删除,现在追加之后,3秒后自动隐藏,而不是删除。
代码如下:
//点击视频,获取id,并追加个小div进去----拉私有白板+控制音视频按钮
mediaBox.onclick= function(){
studentVideoId= mediaElementContainer.id;
if($("#"+studentVideoId+"stu").length<= 0){
$("#"+studentVideoId).append("<divid='"+studentVideoId+"stu'class='PriWB_controlVideoAudioDiv'><button class='getPriWB-btn'onclick='getPriWB(studentVideoId)'>私有白板</button><buttonclass='closeSomeoneVideoAudio-btn'onclick='closeSomeoneVideoAudio(studentVideoId)'>关声音</button><buttonclass='openSomeoneVideoAudio-btn' onclick='openSomeoneVideoAudio(studentVideoId)'>开声音</button></div>");
}
document.getElementById(studentVideoId+'stu').style.display='block';
setTimeout("document.getElementById('"+studentVideoId+"stu').style.display='none'",3000);
}
注:优化了两点,一是追加后不再删除,而是3秒后隐藏。
二是防止用户多次连续单击,加了一个if控制语句,如果要追加的div已经存在,就不再二次追加。
2)在开声音里面加入关声音的代码
声音控制实现了,具体如下:
a.)单击单个学生视频时,追加两个按钮(私有白板+声音控制)
//点击视频,获取id,并追加个小div进去----拉私有白板+控制音视频按钮
mediaBox.onclick = function(){
stuIdVA =mediaElementContainer.id;
if($("#"+stuIdVA+"stu").length <= 0){
$("#"+stuIdVA).append("<div id='"+stuIdVA
+"stu'class='PriWB_controlVideoAudioDiv'><button class='getPriWB-btn' onclick='getPriWB(stuIdVA)'>私有白板</button><button id='ctrl"
+stuIdVA+"' onclick='ctrlSgVA(stuIdVA)'>开声音</button></div>");
}
document.getElementById(stuIdVA+'stu').style.display='block';
setTimeout("document.getElementById('"+stuIdVA+"stu').style.display='none'",5000);
}
注:里面的私有白板函数没有大改,改了控制声音视频函数,用按钮值的改变来控制不同函数的调用。
b.) getPriWB(stuIdVA)函数如下:
//拉学生白板-------------------------------------------------------3.1
function getPriWB(stuIdVA) {
connection.send({
stuIdVAPri:stuIdVA,
stopTimer:true
});
document.getElementById(stuIdVA+'stu').style.display='none';
}
c.) ctrlSgVA(stuIdVA)函数如下:
//控制某个学生的音视频---------------------------------------------3.2
function ctrlSgVA(stuIdVA) {
//var valVA= $("#"+event.target.id).text();
var valVA =$("#ctrl"+stuIdVA).text();
if(valVA =='关声音'){
closeSgVA(stuIdVA);
$("#ctrl"+stuIdVA).text("开声音");
}else{
openSgVA(stuIdVA);
$("#ctrl"+stuIdVA).text("关声音");
}
document.getElementById(stuIdVA+'stu').style.display='none';
}
注:其实一个按钮变来变去,想通了,很容易实现,下午时,一直纠结怎么获取当前按钮的值(目前找到两种方法:var valVA = $("#"+event.target.id).text();和var valVA =$("#ctrl"+stuIdVA).text();),以及怎么实现一个按钮控制两个函数,其实只要找到一个改变的值对其进行限定即可。
注:当按钮的值为关声音时,调用closeSgVA(stuIdVA);
当按钮的值为开声音时,调用openSgVA(stuIdVA);
d.)关声音及开声音函数分别如下:
//关闭单个学生的音视频----------------------------------------------3.2.1
function closeSgVA(stuIdVA) {
connection.send({
action:"silent",
uid:stuIdVA
});
}
//打开单个学生的音视频----------------------------------------------3.2.2
function openSgVA(stuIdVA) {
connection.send({
action:"unsilent",
uid:stuIdVA
});
}
e.)关闭声音时,修改了学生端的函数,如下:
//禁音
if(event.data.action =="silent"){
//console.log('event.data.uid--->',event.data.uid);
//全员禁音
if(event.data.uid =="all"){
//console.log('eeeeeeeeeeeeeee');
connection.removeStream(connection.localMediaStreamId);
return;
}
//单个禁音
if(event.data.uid ==connection.localMediaStreamId){
connection.removeStream(connection.localMediaStreamId);
return;
}
return;
}
注:单个禁音,就只关闭他一个人的声音和视频,不对其他人做任何操作。
f.)开声音时,也做了修改,如下:
//开声音
if(event.data.action =="unsilent"){
if(event.data.uid =="all" ){//全员通话
connection.renegotiate();
return;
}
if(event.data.uid ==connection.localMediaStreamId){//单个通话
connection.renegotiate(connection.sessionid);
//单独辅导作业时,要辅导的学生切换到共享白板
toSharedWB();
return;
}
return;
}
注:老师开启某个学生的声音时,只开启他一个人的声音,也不对别的学生做任何操作。
2017年3月16日星期四
- 第75篇一对多之合并开关声音按钮及获取当前按钮id及一个按钮控制两个函数
- 第68篇一对多之头像与视频合成(三)在视频上添加控制语音按钮
- 开关按钮
- 开关按钮
- 开关按钮
- Unity3d如何制作声音开关按钮
- Android之复选按钮、单选按钮、开关按钮
- 优化range双滑块及单选开关按钮
- 第71篇一对多之优化实时共享私有白板最后一页(二)添加了一个老师辅导按钮
- 定制按钮及CALayer
- android 布局及按钮
- easyui按钮及图片
- 第46篇白板修复之移动按钮拿掉及橡皮擦可选颜色
- 第50篇铅笔选择三种粗细(四)之样式及用按钮实现
- 动态的表格按钮及按钮事件
- Ext中一个按钮控制两个表格数据添加
- 多按钮,点击当前按钮变色,点击其它按钮恢复
- 设计一个开关样式的双项单选按钮。
- NYOJ_1236_挑战密室
- 513. Find Bottom Left Tree Value
- Windows 10 产品安装密钥
- REST简介
- c++ vector
- 第75篇一对多之合并开关声音按钮及获取当前按钮id及一个按钮控制两个函数
- Git版本回退方式(一)
- httpd配置
- 用CodeWorrior编译时出现Warning:Undefined Macro 'SANYUAN7Ah' is taken as 0' is taken as 0
- linux入门使用(2)
- Android创建全局线程池类之newCachedThreadPool
- shell脚本语法
- 将jar包加入到Maven本地仓库!
- Lost Cows POJ