canvas自定義編輯器
阿新 • • 發佈:2019-01-25
// 獲取視訊資訊
var oVideo = document.querySelector('#video');
// 獲取播放暫停按鈕
var oStopToP = document.querySelector('.stopToP');
var oPlayToS = document.querySelector('.playToS');
// 獲取時間
var oOverTime = document.querySelector('.overTime');
var oAllTime = document.querySelector('.allTime' );
// 播放進度條
var oProgress = document.querySelector('.progressVideo');
var oOver = document.querySelector('.overVideo');
// 時間進度條
var oProgressA = document.querySelector('.progressAudio');
var oOverA = document.querySelector('.overAudio');
// 全屏
var ofullScreen = document.querySelector('.fullScreen' );
// 所有視訊播放(暫停)的前提條件就是視訊可播放
oVideo.addEventListener('canplay',function(){
oVideo.removeEventListener('canplay', arguments.callee);
// 點選暫停按鈕,它轉化為播放按鈕,視訊同時播放(注意先判斷視訊的狀態)
oStopToP.onclick = function(){
oVideo.play();
stopState();
}
// 點選播放按鈕,它轉化為暫停按鈕,視訊同時停止(注意先判斷視訊的狀態)
oPlayToS.onclick = function(){
oVideo.pause();
playState();
}
// 獲取視訊的總時間,傳遞給oAllTime中,注意時間轉化為分秒的形式
oAllTime.innerHTML = timeT(oVideo.duration);
oVideo.addEventListener("timeupdate",function(){
oOverTime.innerHTML =timeT(oVideo.currentTime);
// 讓視訊的進度條隨著時間的播放而走動
oOver.style.width = oVideo.currentTime/oVideo.duration*100+"%";
},false)
// 注意分析,當點選進度條上的任何一個地方需要,發生的變化:
// 1,進度條走到那裡(通過offsetX事件可自動獲取)
// 2,用當前時間(oVideo.currentTime)跳轉到那裡以控制視訊也跳到那裡,
// 不要賦值給oAllTime.innerHTML,因為它無法控制視訊的播放,而且上面已經給過,
// 注意offsetX,獲取的是你點選的這個物體的地方到它的最左邊的距離用px表示,而我們設定用的是%型別
oProgress.addEventListener("click",function(event){
var x = event.offsetX;
var width = this.offsetWidth;
var scale = x/width;
oOver.style.width = scale*100+"%";
oVideo.currentTime = scale*oVideo.duration;
},false)
oProgressA.addEventListener("click",function(event){
var x = event.offsetX;
var width = this.offsetWidth;
var scale = x/width;
oOverA.style.width = scale*100+"%";
oVideo.volume = scale;
},false)
// 如果視訊結束返回初始狀態
oVideo.addEventListener('ended',function(){
this.currentTime=0;
playState();
},false)
// 全屏
ofullScreen.addEventListener("click",function(){
oVideo.webkitRequestFullScreen();
},false)
},false)
// 把時間轉化成分秒的方式,用同一個變數來存放不同時期的值
function timeT(num){
var m = Math.floor(num/60);
var s = Math.floor(num%60);
m = m > 9 ? m : "0" + m;
s = s > 9 ? s : "0" + s;
return m + ":" + s;
}
// 播放狀態
function playState(){
if(oVideo.paused){
oStopToP.style.display = "block";
oPlayToS.style.display = "none";
}
}
// 暫停狀態
function stopState(){
if(!oVideo.paused){
oStopToP.style.display = "none";
oPlayToS.style.display = "block";s
}
}