uniapp 点击播放音乐(音频)

 uniapp通过uni.createInnerAudioContext()获取音频的信息

通过innerAudioContext.autoplay = true; //自动播放;

通过innerAudioContext.loop=true; //循环播放;

通过innerAudioContext.src=”音乐地址“ 

play()播放和pause()暂停

// 定义变量
const innerAudioContext = uni.createInnerAudioContext();
innerAudioContext.autoplay = true;
innerAudioContext.loop=true; //循环播放
innerAudioContext.src ='https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-hello-uniapp/2cc220e0-c27a-11ea-9dfb-6da8e309e0d8.mp3';

// 调用方法
bjMusicClick:function(){
	if(this.musicShow){
	console.log('播放')
	const timout =  setTimeout(() => {
		learTimeout(timout)
		innerAudioContext.play()
	},500)
	}else{
		console.log('暂停')
		innerAudioContext.pause();
		}
	this.musicShow=!this.musicShow;
}

使用play() 播放方法时,加入定时器,可以变得相对于稳定的使用。

 完整代码如下:

<template>
	<view>
		<view class="audio border-left flex-row">
			<u-icon v-if="musicShow" name="play-circle-fill" size="30" color="#805b93" @click="bjMusicClick"></u-icon>
			<u-icon v-else name="pause-circle-fill" size="30" color="#805b93" @click="bjMusicClick"></u-icon>
			<text class="margin-left">{{duration}}"</text>
		</view>
	</view>
</template>

<script>
	const innerAudioContext = uni.createInnerAudioContext();
	innerAudioContext.autoplay = true; //自动播放
	innerAudioContext.loop=true; //循环播放
	innerAudioContext.src ='https://bjetxgzv.cdn.bspapp.com/VKCEYUGU-hello-uniapp/2cc220e0-c27a-11ea-9dfb-6da8e309e0d8.mp3'; //音频地址
	export default {
	    data() {
	       return {
				duration:21,
				musicShow:true
		   }
	    },
	     onLoad(){
	        this.musicShow=false;
	    },
	    methods: {
			bjMusicClick:function(){
				if(this.musicShow){
					console.log('播放')
					const timout =  setTimeout(() => {
						clearTimeout(timout)
						innerAudioContext.play()
					},500)
				}else{
					console.log('暂停')
					innerAudioContext.pause();
				}
				this.musicShow=!this.musicShow;
			}
	    }   
	}
</script>


<style lang="scss" scoped>
.audio{
	width: 150rpx;
	height: 60rpx;
	background: rgba(0, 0, 0, 0.2);
	
	text{
		color: #fff;
	}
}
</style>


最终的实现效果

 

 

UniApp是一个基于Vue.js的跨平台应用开发框架,它允许开发者编写一套代码,同时在iOS、Android、Web等多个平台上运行。在UniApp中,处理音频播放通常会利用其内置的`audio`组件,以及`uni.loadFile`等API来实现无缝播放。 为了在UniApp中无缝播放多个音频文件,你可以按照以下步骤操作: 1. **引入audio组件**:首先,在你的页面模板里引入`<audio>`标签。 ```html <template> <view> <audio ref="myAudio" id="myAudio"></audio> </view> </template> ``` 2. **加载音频资源**:使用`uni.loadFile`异步加载音频文件到缓存,然后通过URL播放。 ```js <script setup> import { onReady } from '@dcloudio/uni-app'; onReady(async () => { await uni.loadFile({ url: 'your_audio_1.mp3', // 音频文件路径 success(res) { const audioUrl = res.tempFilePath; // 获取临时文件路径 this.playAudio(audioUrl); }, }); // 同理加载其他音频... }); </script> ``` 3. **创建播放方法**:设置一个方法`playAudio`,用于切换并开始播放每个音频。 ```js methods: { playAudio(url) { this.$refs.myAudio.src = url; this.$refs.myAudio.play(); // 如果需要无缝播放,可以在当前音频结束时自动播放下一个 this.$refs.myAudio.addEventListener('ended', () => { this.nextAudio(); }); }, nextAudio() { // 切换到下个音频,并继续播放 // 你可以在这里添加判断是否还有更多的音频,如果没有则停止播放 if (/* 判断条件 */) { // 加载并播放下一个音频 } else { // 播放完成后的清理工作,如暂停音乐等 } }, } ``` 4. **处理错误**:别忘了处理可能出现的加载和播放错误。 记得替换`'your_audio_1.mp3'`为实际的音频文件路径,并根据实际需求调整`nextAudio`函数的内容。如果你有多个音频需要播放,可以多次调用`uni.loadFile`并保存每个音频的引用。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值