| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 | <template>	<view>		<page-head :title="title"></page-head>		<view class="uni-padding-wrap">			<view class="uni-center">				<text class="time-big">{{formatedPlayTime}}</text>			</view>			<view class="uni-common-mt">				<slider class="slider" min="0" max="21" step="1" :value="playTime" @change="seek"></slider>			</view>			<view class="play-time">				<text>00:00</text>				<text>00:21</text>			</view>			<view class="uni-hello-text">注意:离开当前页面后背景音乐将保持播放,但退出uni-app将停止</view>			<view class="page-body-buttons">				<block v-if="playing">					<view class="page-body-button" @tap="stop">						<image src="/static/stop.png"></image>					</view>					<view class="page-body-button" @tap="pause">						<image src="/static/pause.png"></image>					</view>				</block>				<block v-if="!playing">					<view class="page-body-button"></view>					<view class="page-body-button" @tap="play">						<image src="/static/play.png"></image>					</view>				</block>				<view class="page-body-button"></view>			</view>		</view>	</view></template><script>	import * as util from '../../../common/util.js';	export default {		data() {			return {				title: 'backgroundAudio',				bgAudioMannager: null,				dataUrl: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-hello-uniapp/2cc220e0-c27a-11ea-9dfb-6da8e309e0d8.mp3',				playing: false,				playTime: 0,				formatedPlayTime: '00:00:00'			}		},		onLoad: function () {			this.playing = this.$backgroundAudioData.playing;			this.playTime = this.$backgroundAudioData.playTime;			this.formatedPlayTime = this.$backgroundAudioData.formatedPlayTime;			let bgAudioMannager = uni.getBackgroundAudioManager();			if(!bgAudioMannager.title){				bgAudioMannager.title = '致爱丽丝';			}			if(!bgAudioMannager.singer) {				bgAudioMannager.singer = '暂无';			}			if(!bgAudioMannager.coverImgUrl){				bgAudioMannager.coverImgUrl = 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/c517b410-5184-11eb-b997-9918a5dda011.jpeg';			}			bgAudioMannager.onPlay(() => {				console.log("开始播放");				this.$backgroundAudioData.playing = this.playing = true;			})			bgAudioMannager.onPause(() => {				console.log("暂停播放");				this.$backgroundAudioData.playing = this.playing = false;			})			bgAudioMannager.onEnded(() => {				this.playing = false;				this.$backgroundAudioData.playing = false;				this.$backgroundAudioData.playTime = this.playTime = 0;				this.$backgroundAudioData.formatedPlayTime = this.formatedPlayTime = util.formatTime(0);			})			bgAudioMannager.onTimeUpdate((e) => {				if (Math.floor(bgAudioMannager.currentTime) > Math.floor(this.playTime)) {					this.$backgroundAudioData.formatedPlayTime = this.formatedPlayTime = util.formatTime(Math.floor(bgAudioMannager.currentTime));				}				this.$backgroundAudioData.playTime = this.playTime = bgAudioMannager.currentTime;			})			this.bgAudioMannager = bgAudioMannager;		},		methods: {			play: function (res) {				if (!this.bgAudioMannager.src) {					this.bgAudioMannager.startTime = this.playTime;					this.bgAudioMannager.src = this.dataUrl;				} else {					this.bgAudioMannager.seek(this.playTime);					this.bgAudioMannager.play();				}			},			seek: function (e) {				this.bgAudioMannager.seek(e.detail.value);			},			pause: function () {				this.bgAudioMannager.pause();			},			stop: function () {				this.bgAudioMannager.stop();				this.$backgroundAudioData.playing = this.playing = false;				this.$backgroundAudioData.playTime = this.playTime = 0;				this.$backgroundAudioData.formatedPlayTime = this.formatedPlayTime = util.formatTime(0);			}		}	}</script><style>	image {		width: 150rpx;		height: 150rpx;	}	.page-body-text {		padding: 0 30rpx;	}	.page-body-wrapper {		margin-top: 0;	}	.page-body-info {		padding-bottom: 50rpx;	}	.time-big {		font-size: 60rpx;		margin: 20rpx;	}	.slider {		width:630rpx;	}	.play-time {		font-size: 28rpx;		width:100%;		padding: 20rpx 0;		display: flex;		justify-content: space-between;		box-sizing: border-box;	}	.page-body-buttons {		display: flex;		justify-content: space-around;		margin-top: 100rpx;	}	.page-body-button {		width: 250rpx;		text-align: center;	}</style>
 |