/* * 播放器公用事件 */ define(['css!vendorDir/audio/css/style.css'],function(){ var AUDIO = { StartTime :0, timer:"", x : 0, totalTime:"", perTime:"", dataArr : ["1121","233","23213"], dataArrMax : [], timeArr : [], timeArrMax : [], id:"", T:3 }; AUDIO.init = function(div,name,callback){ var audio_desc = $("#audio_desc").text(); require(['html!vendorDir/audio/audio'], function(audio) { AUDIO.id = div; $("#"+div).html(audio); pageBtnInit(); measurTotalTime(); if(typeof callback === "function"){ callback.call(); } }) }; AUDIO.play = function(){ ONEMAP.C.publisher.publish({ action:'start', data:AUDIO }, AUDIO.id); time(); }; AUDIO.parse = function(){ clearInterval(AUDIO.timer); ONEMAP.C.publisher.publish({ action:'parse', data:AUDIO }, AUDIO.id); }; AUDIO.initPage=function (){ measurTotalTime(); } AUDIO.stop = function(){ clearInterval(AUDIO.timer); AUDIO.StartTime = 0; AUDIO.x = 0; $(".audio_btn_parse").hide(); $(".audio_btn_play").show(); $(".audio_progress_btn").css("margin-left",AUDIO.x); measureNowTime(); ONEMAP.C.publisher.publish({ action:'stop', data:AUDIO }, AUDIO.id); }; AUDIO.forward = function(){ var per = AUDIO.T; if(AUDIO.StartTime >= AUDIO.totalTime-per){ AUDIO.StartTime = AUDIO.totalTime; AUDIO.x = $(".audio_progress").width()-7; $(".audio_progress_btn").css("margin-left",$(".audio_progress").width()-7); }else{ AUDIO.StartTime += per; AUDIO.x += AUDIO.perTime*per; $(".audio_progress_btn").css("margin-left",AUDIO.x); } measureNowTime(); if(AUDIO.dataArr.length > 0 && AUDIO.timeArr.length > 0){ var arrIndex = (AUDIO.StartTime-AUDIO.StartTime%AUDIO.T)/AUDIO.T; } ONEMAP.C.publisher.publish({ action:'forward', data:AUDIO }, AUDIO.id); }; AUDIO.back = function(){ var per = AUDIO.T; if(AUDIO.StartTime < per){ AUDIO.StartTime = 0; AUDIO.x = 0; }else{ AUDIO.StartTime -= per; AUDIO.x -= AUDIO.perTime*per; } $(".audio_progress_btn").css("margin-left",AUDIO.x); measureNowTime(); if(AUDIO.dataArr.length > 0 && AUDIO.timeArr.length > 0){ var arrIndex = (AUDIO.StartTime-AUDIO.StartTime%AUDIO.T)/AUDIO.T; } ONEMAP.C.publisher.publish({ action:'back', data:AUDIO }, AUDIO.id); }; //开启计时器 function time(){ AUDIO.timer = window.setInterval(timeStart,1000); } function measurTotalTime(){ var total = AUDIO.dataArr.length*AUDIO.T; var totMin = Math.floor(total/60); var totSecond = total%60; var totTime = pad(totMin) + ":" + pad(totSecond); $(".audio_progress_totaltime").empty(); $(".audio_progress_totaltime").val(totTime); $(".audio_progress_totaltime").text(AUDIO.dataArr.length); if(AUDIO.dataArr.length > 0){ $(".audio_progress_nowtime").text(1); }else{ $(".audio_progress_nowtime").text(0); } meaurePerTime(); } function pad(m){ if(m.length<2){ m="0"+m; return pad(m) }else{ return m } } //计算圆点每隔一秒前进的像素数 function meaurePerTime(){ var totString = $(".audio_progress_totaltime").val(); var totArr = totString.split(":"); var totMin = parseInt(totArr[0]); var totSecond = parseInt(totArr[1]); var proWidth = $(".audio_progress").width(); AUDIO.totalTime = totMin*60 + totSecond; AUDIO.perTime = proWidth/AUDIO.totalTime; } //开始事件 function timeStart(){ AUDIO.StartTime ++; var proWidth = $(".audio_progress").width(); AUDIO.x += AUDIO.perTime; if(AUDIO.StartTime >= AUDIO.totalTime){ AUDIO.StartTime = AUDIO.totalTime; clearInterval(AUDIO.timer); $(".audio_btn_parse").hide(); $(".audio_btn_play").show(); AUDIO.stop(); } if(isNaN(AUDIO.StartTime)){ AUDIO.StartTime = 1; } var per = AUDIO.T; var now = (AUDIO.StartTime - AUDIO.StartTime%per)/per + 1; if(now > AUDIO.totalTime){ now = AUDIO.totalTime; } $(".audio_progress_nowtime").empty(); $(".audio_progress_nowtime").text(now); if(AUDIO.x < proWidth-7){ $(".audio_progress_btn").css("margin-left",AUDIO.x); }else{ $(".audio_progress_btn").css("margin-left",proWidth-7); } //每3秒平播放一次 if(AUDIO.StartTime%AUDIO.T == 0){ ONEMAP.C.publisher.publish({ action:'play', data:AUDIO }, AUDIO.id); } } //计算当前页数 function measureNowTime(){ var tmp = AUDIO.x/($(".audio_progress").width()-7); AUDIO.StartTime = Math.floor(AUDIO.totalTime * tmp); var per = AUDIO.T; var now = (AUDIO.StartTime - AUDIO.StartTime%per)/per + 1; if(now >= AUDIO.dataArr.length){ now = AUDIO.dataArr.length; } $(".audio_progress_nowtime").empty(); $(".audio_progress_nowtime").text(now); } //初始化播放器页面按钮 function pageBtnInit(){ //播放按钮 $(".audio_btn_play").off('click').on('click',function(){ $(this).hide(); $(".audio_btn_parse").show(); AUDIO.play(); $("#audio_text_pertime_input").attr("readonly","readonly"); }); //暂停按钮 $(".audio_btn_parse").off('click').on('click',function(){ $(this).hide(); $(".audio_btn_play").show(); AUDIO.parse(); }); //前进按钮 $(".audio_btn_forward").off('click').on('click',function(){ AUDIO.forward(); }); //后退按钮 $(".audio_btn_back").off('click').on('click',function(){ if(AUDIO.StartTime == 0){ return false; }else{ AUDIO.back(); } }); //停止按钮 $(".audio_btn_stop").off('click').on('click',function(){ if(AUDIO.StartTime == 0){ return false; }else{ AUDIO.stop(); } $("#audio_text_pertime_input").removeAttr("readonly"); }); $("#audio_text_pertime_input").change(function(){ measurTotalTime(); }); //时间轴点击 $(".audio_progress").off('click').on('click',function(e){ AUDIO.x = e.pageX - (parseInt($(window).width()) - parseInt($("#audio_div").css("right")) - parseInt($("#audio_div").width())) - 8; $(".audio_progress_btn").css("margin-left",AUDIO.x); measureNowTime(); if(AUDIO.dataArr.length > 0 && AUDIO.timeArr.length > 0){ var arrIndex = (AUDIO.StartTime-AUDIO.StartTime%AUDIO.T)/AUDIO.T; } }).hover(function(e){ if(AUDIO.dataArr.length > 0 && AUDIO.timeArr.length > 0){ var hoverx = e.pageX - (parseInt($(window).width()) - parseInt($("#audio_div").css("right")) - parseInt($("#audio_div").width())) - 8; var tmp = hoverx/($(this).width()-7); var hoverTime = Math.floor(AUDIO.totalTime * tmp); var arrIndex = (hoverTime-hoverTime%AUDIO.T)/AUDIO.T; $(this).attr("title",AUDIO.timeArr[arrIndex].stime + "~" + AUDIO.timeArr[arrIndex].etime); } },function(){ }).mousemove(function(e){ if(AUDIO.dataArr.length > 0 && AUDIO.timeArr.length > 0){ var movex = e.pageX - (parseInt($(window).width()) - parseInt($("#audio_div").css("right")) - parseInt($("#audio_div").width())) - 8; var tmp = movex/($(this).width()-7); var hoverTime = Math.floor(AUDIO.totalTime * tmp); var arrIndex = (hoverTime-hoverTime%AUDIO.T)/AUDIO.T; $(this).attr("title",AUDIO.timeArr[arrIndex].stime + "~" + AUDIO.timeArr[arrIndex].etime); } }); } return ONEMAP.M.AUDIO={ AUDIO:AUDIO } })