1.音频对象 用于通过JS进行H5音频的播放控制 2.播放列表数据 服务内部使用的播放列表概念,实际播放音频时都是从此列表中播放音频,服务的消费者可以调用接口来操作此列表 3.正在播放音频的参数 音频时长,当前进度以及播放模式(随机播放之类)等 4.播放时的轮询监听变量 用于音频播放过程中自动启动轮询,定时(每秒)更新播放参数,当音频暂停或停止时取消此监听@H_301_0@服务初始化时需要做的事情有:
1.创建音频对象 可直接使用document.createElement('audio'),但不需要将其添加到DOM中。 后续的播放控制均使用此对象来操作。 2.初始化私有变量 私有变量中播放列表是一个数组,成员的参数使用audio.model.ts来规范化, 必须包含一个Url参数存放播放源,以及其他可选参数 相同的播放参数也用一个play-data.model.ts来规范化 3.给音频添加onplay、onpause、onend等播放事件的监听@H_301_0@此服务提供的公有接口包括:
1.Toggle(audio) 判断传入的音频是否已在列表中,已存在则播放或暂停,若不存在则添加进来并播放 2.Add() 仅添加音频到列表中 3.Remove() 移除音频出播放列表,需要考虑好移除后对播放队列的影响,比如是否是正在播放的音频被移除等等 4.Next() 5.Prev() 上一曲与下一曲操作,需要考虑到播放模式 6.Skip() 进行播放进度的跳转 7.PlayList() 8.PlayData() 用于暴露服务所维护的两个数据(播放列表与播放参数),在指令中都是通过这两个接口来呈现数据的@H_301_0@服务的完整代码如下: @H_301_0@
代码" style="margin:0px;float:left;border:none;" src="http://common.cnblogs.com/images/copycode.gif">
@NgModule({ imports:[CommonModule,SharedModule],declarations:[AudioStudioComponent],exports:[AudioStudioComponent],providers:[AudioService] })@H_301_0@
代码" style="margin:0px;float:left;border:none;" src="http://common.cnblogs.com/images/copycode.gif">
代码" style="margin:0px;float:left;border:none;" src="http://common.cnblogs.com/images/copycode.gif">
1.在构造函数中注入服务: constructor(publicaudio:AudioService){} 2.使用Add()方法添加音频:@H_301_0@audio.Add({Url: '/assets/audio/唐人街.mp3',Title: '唐人街-林宥嘉',
Cover: '/assets/img/2219A91D.jpg'});
audio.Add({Url: '/assets/audio/自然醒.mp3',Title: '自然醒-林宥嘉',
Cover: '/assets/img/336076CD.jpg'}); @H_301_0@
代码" style="margin:0px;float:left;border:none;" src="http://common.cnblogs.com/images/copycode.gif">
publicSkip(e){this.audio.Skip(e.layerX/ document.getElementById('audio-total').getBoundingClientRect().width); }@H_301_0@现在运行项目: @H_301_0@