Vue中音乐播放器的使用

 先找到网易云的地址,并随便找几首歌

一、网易云地址

http://music.163.com/song/media/outer/url?id=

在网易云里找几首歌曲:

                    songs:[
						{
							id:25640392,
							name:"淋雨一直走",
							artist:"张韶涵"
						},
						{
							id:139808,
							name:"快乐崇拜",
							artist:"潘玮柏"
						},
						{
							id:25640409,
							name:"有形的翅膀",
							artist:"张韶涵"
						}
					]

二、播放器代码

播放时需要给属性src传歌曲地址,用到三个方法:播放play,暂停pause,继续contimue

<audio style="width: 100%;" controls  id="player"></audio>
按钮在什么情况下显示点击后设置内容
播放play所有非当前歌曲设置src,状态码改成1
暂停pause当前歌曲,状态码为1状态码改成0
继续continue当前歌曲,状态码为0状态码改成1

用v-if来控制按钮的切换

			<button v-if="status==1 && currentId==song.id">暂停</button>
			<button v-else-if="status==0 && currentId==song.id" >继续</button>
			<button v-else >播放</button>

给每个按钮都绑定一个点击事件,并且用:data-sid来传递歌曲编号

<button @click="doPause" :data-sid="song.id">暂停</button>
<button @click="doContinue" :data-sid="song.id">继续</button>
<button @click="doPlay" :data-sid="song.id">播放</button>

三、按钮点击事件

一共三个点击事件互相切换,打开时所有歌曲显示播放,点击后开始播放,按钮显示“暂停”,再次点击后暂停播放,按钮显示“继续”

        //播放
        doPlay(event){
			vm.currentId = event.srcElement.dataset.sid;		
			player.src="http://music.163.com/song/media/outer/url?id="+vm.currentId;
			player.play();
			vm.status=1;
        },
        //暂停
		doPause(){
			player.pause();
			vm.status=0;
		},
        //从暂停处开始继续播放
		doContinue(){
			player.play();
			vm.status=1;
		}

四、完整代码

导入了vue,jquery,bootstrap的依赖

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<link rel="stylesheet" href="css/bootstrap.min.css" />
		<script type="text/javascript" src="js/vue.js"></script>
		<script type="text/text/javascript" src="js/bootstrap.min.js"></script>
		<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
	</head>
	<body>
		<div id="app">
			<table class="table table-bordered">
				<tr>
					<th>序号</th>
					<th>歌曲ID</th>
					<th>歌名</th>
					<th>歌手</th>
					<th>操作</th>
				</tr>
				<tr v-for="song,index in songs">
					<td>{{index+1}}</td>
					<td>{{song.id}}</td>
					<td>{{song.name}}</td>
					<td>{{song.artist}}</td>
					<td>
						<button v-if="status==1 && currentId==song.id" class="btn btn-danger btn-xs" @click="doPause" :data-sid="song.id">暂停</button>
						<button v-else-if="status==0 && currentId==song.id" class="btn btn-warning btn-xs" @click="doContinue" :data-sid="song.id">继续</button>
						<button v-else class="btn btn-success btn-xs" @click="doPlay" :data-sid="song.id">播放</button>
					</td>
				</tr>
			</table>
			
		</div>
		<audio style="width: 100%;" controls  id="player"></audio>
		
		<script type="text/javascript">
			var player = document.getElementById("player");
		
			var vm = new Vue({
				el:"#app",
				data:{
					songs:[
						{
							id:25640392,
							name:"淋雨一直走",
							artist:"张韶涵"
						},
						{
							id:139808,
							name:"快乐崇拜",
							artist:"潘玮柏"
						},
						{
							id:25640409,
							name:"有形的翅膀",
							artist:"张韶涵"
						}
					],
					currentId:0,
					status:0
				},
				methods:{
					doPlay(event){
						vm.currentId = event.srcElement.dataset.sid;
						
						player.src="http://music.163.com/song/media/outer/url?id="+vm.currentId;
						console.log(player);
						player.play();
						vm.status=1;
					},
					doPause(){
						player.pause();
						vm.status=0;
					},
					doContinue(){
						player.play();
						vm.status=1;
					}
				}
				
			})
			
		</script>
	</body>
</html>

五、运行结果

歌曲听不到,看播放器的状态就好

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

youngcave2

等待第一笔打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值