123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- /*
- * 播放器公用事件
- */
- 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
- }
- })
|