现在的位置: 首页 > 综合 > 正文

手机网站开发——网页音频播放器

2019年01月04日 ⁄ 综合 ⁄ 共 2024字 ⁄ 字号 评论关闭

采用jQuery Mobile开发,页面使用HTML5语言编写完成,并利用js添加响应事件等

第一阶段为静态页面的开发

第一步,确定页面需求

1) 歌手图片,歌手基本介绍

2) 一般音频播放器的控制按钮,包括播放暂停、上下曲;以及控制播放模式的按钮

3) 显示当前播放歌曲、当前播放歌曲时间以及进度条

第二步,实现基本的HTML页面,该过程不是本文的重点,故不进行详述

第三部,添加各种事件监听,实现音频播放器的基本功能

1) 歌曲间的切换:每一首播放完后,切换到下一首

对每个<audio>对象添加一个onclick()="next()"事件,这样每一首播放完了就会执行next()函数,在js中实现该函数

2) 控制播放模式

在js中定义四个变量,list_play/list_loop/single_loop/random_play,分别带便列表播放、循环播放等;将控制播放模式的控件写成一个form控件<input type="button">,并添加onclick()="p_control()"事件,每次点击对播放模式进行切换

同时进行按钮内文本的更新,具体操作:

var pattern_control = document.getElementById("pattern_control");

pattern_control.value = "播放模式:列表循环";
                        $('[type="button"]').button('refresh');

3) 控制播放暂停以及上下曲按钮,将三个按钮写成一个group,水平显示

<ul data-role="controlgroup" data-type="horizontal">

在每个<li>添加图片<img>,考虑到在手机上显示,将图片改成36px*36px

为每个<li>添加click事件,比如下一曲的<li>:$("#next").click(function(),调用next()函数

这里要注意的一个问题是控制播放暂停的按钮,每次点击都需要对<img>进行更新,$('#img2').attr("src", 'images/pause.png').trigger('refresh');修改attr值,并触发refresh事件对<img>进行更新

4) 进度条,使用<div>里面嵌入另一个<div>,背景颜色不同,歌曲播放过程中对进度条进行更新

<div data-inline="true" data-inset="true" id="progressBar" class="ui-block-a progressBar" style="width: 80%; height: 10px; background-color:#ffffff;  -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px;"><div
id="progress" style="background-color:#9c9d8b; height:10px; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px;"></div></div>

对<audio>添加ontimpupdate="updateProgress()"事件,即每当歌曲的播放进度不同时会出发该事件

进度条不只要能实现当前进度的显示(该过程比较简单,通过歌曲的currentTime和duration获取百分比,并利用该百分比来决定子<div>的宽度),还要实现对屏幕点击事件的响应,从而调整进度,对该<div>添加click()事件,获取当前点击位置的坐标e.pageX,并获得进度条的偏移var div_offset = $("#progressBar").offset().left;;相减即可得到点击位置的偏移,从而更新歌曲的currentTime

5)当前歌曲进度的时间显示

主要获取当前歌曲的currentTime和duration,并利用conversionTime(time)将该时间转化成显示的形式0:00,并利用music_currentTime.innerHTML对文本进行更新

6) 显示当前播放歌曲,实现一个动态效果,左移/右移;顶一个moving函数,利用$("#current_song").css('padding-left', '+=2');对CSS进行修改,并添加一个lr_control变量,来判断当前是左移还是右移

最后,将moving()函数添加进updateProgress(),即每当歌曲播放进度改变时,会出发该函数

7)歌曲列表是做成一个checkbox列表,为的是用户能够选中自己想播放的歌曲列表,从而根据播放列表以及当前播放模式来播放

因此next()和previous()函数实现起来比较麻烦

最终的界面在电脑上显示如图

抱歉!评论已关闭.