1. 程式人生 > >HTML5中Audio物件volume屬性的應用

HTML5中Audio物件volume屬性的應用

                                         Audio物件屬性: volume  描述:設定或返回音訊的音量,取值範圍(0——1)

 下面是我做的音樂播放器如何調節音訊音量的程式碼:

//增加切換音量事件
(function(){
	var height = $("#myAudio ul.control li.volume .alert-box .volume-wrap .bar .scroll-bar").height();
	$("#myAudio ul.control li.volume .alert-box .volume-wrap .bar .scroll-bar .scroll-btn").on("mousedown",function(e){
		e.preventDefault();
		var downHeight = $("#myAudio ul.control li.volume .alert-box .volume-wrap .bar .scroll-bar").height();
		var downY = e.clientY;
		document.onmousemove = function(e){
			e.preventDefault();
			var moveY = e.clientY;
			var nowHeight = downY-moveY+downHeight;
			if(nowHeight<=0){
				nowHeight =0;
			}else if(nowHeight >= height){
				nowHeight = height;
			}
			$("#myAudio ul.control li.volume .alert-box .volume-wrap .bar .scroll-bar").height(nowHeight);
			var precent = nowHeight/height;
			audio.volume = precent;
		}

		document.onmouseup = function(){
			document.onmousemove = null;
			document.onmouseup = null;
		}
	});
})();
 

上面的主要思路:宣告height變數先獲取調節音量的滑動條的高度(設定的是80px),

給滑動條上的滑動塊繫結mousedown事件,取消其預設事件e.preventDefault();

宣告downHeight獲取未滑動時的音量滑動條的高度, 宣告downY獲取點選位置距離視窗上方的y(垂直)方向距離var downY = e.clientY;

給整個dom新增mousemove事件,取消其預設事件e.preventDefault();

宣告moveY獲取游標移動到的位置距離視窗上方的y(垂直)方向距離var moveY = e.clientY;

宣告nowHeight獲取調節後音量滑動條的高度var nowHeight = downY-moveY+downHeight;

因為滑動條的高度為80px,所以在下面判斷了一下

if(nowHeight <=0){

nowHeight=0;//最小值為0(對應volume靜音)

}else if(nowHeight>=height){

nowHeight=height;//最大值為80px(對應volume最大值1)

}

將調節後的音量條高度賦值給滑動條,實現調節時滑動條同步變換高度;

由於音量vojume的取值範圍(0-1),讓nowHeight/height  得到調節後高度對總體高度的百分比,值為(0-1)

                                        最後將這個值賦予audio.volume=nowHeight/height;    

當調節結束後,鬆開滑鼠新增mouseup事件,將mousemove和mouseup事件都清空