当前位置: 首页 > news >正文

uniapp音乐播放createInnerAudioContext

利用uniapp的api createInnerAudioContext音乐播放

1.html部分

<template><view style="padding: 30vh 20% 0 20%;" class="flex-space-center"><view @click="handleDo('stop')" v-if="status != 'stop'">结束</view><view @click="handleDo('play')" v-if="status =='stop'">开始</view><view @click="handleDo('pause')" v-if="status == 'play' || status =='resum'">暂停</view><view @click="handleDo('resum')" v-if="status == 'pause'">继续</view><view :class="{play:isPlay,pause:isPause}"style="display: inline-block;height: 40rpx;width: 40rpx;background: red;" @click="handleImg">5</view></view>
</template>

2.script部分

<script>const innerAudioContext = uni.createInnerAudioContext();export default {components: {},data() {return {isPause: false,isPlay: false,status: 'stop', //stop 结束  play播放  pause暂停  resum继续bgmusic: '',src_bgmusic: 'https://web-ext-storage.dcloud.net.cn/uni-app/ForElise.mp3'}},onLoad(options) {this.init(options)},onHide() {//注意:uni.navigateBack到下一个页面时,音乐会继续播放,所以我们要在这里设置一下暂停if (this.bgmusic) {this.voice_pause()}},onShow() {// 从下一个返回到这个页面时继续if (this.bgmusic) {this.audioResum()}},onUnload() {// 页面销毁时暂停音乐this.voice_stop()},onReady() {},methods: {init(options) {// 自然播放结束事件innerAudioContext.onEnded(() => {this.audioPaly()})// 模拟接口请求背景音乐---setTimeout(() => {this.bgmusic = this.src_bgmusic;}, 0)},// 播放audioPaly() {this.isPause = falsethis.isPlay = trueinnerAudioContext.src = this.bgmusicinnerAudioContext.play()this.status = 'play'},// 继续audioResum() {this.isPause = falsethis.isPlay = trueinnerAudioContext.play()this.status = 'resum'},// 暂停audioPause() {this.isPause = true;this.isPlay = false;innerAudioContext.pause()this.status = 'pause'},// 结束audioStop() {this.isPause = truethis.isPlay = false;innerAudioContext.stop()this.status = 'stop'},// 操作handleDo(status) {switch (status) {case 'stop':this.audioStop()break;case 'play':this.audioPaly()break;case 'pause':this.audioPause()break;case 'resum':this.audioResum()break;}},// 点击旋转handleImg() {switch (this.status) {case 'play':this.audioPause()break;case 'pause':this.audioResum()break;case 'resum':this.audioPause()break;case 'stop':this.audioPaly()break;}}}}
</script>

style部分

<style lang="scss" scoped>.play {animation: rotate 3s linear infinite;}.pause {animation-play-state: paused;}@keyframes rotate {to {transform: rotate(360deg);}}
</style>
http://www.xdnf.cn/news/977383.html

相关文章:

  • 零基础实战:云开发家政维修小程序搭建指南
  • UniApp组件封装,2025年最新HarmonyOS鸿蒙模块化开发项目式教程
  • vue3 + element plus 实现表格列头、行的添加及拖动换位
  • vue前端面试题——记录一次面试当中遇到的题(1)
  • element-ui 的el-table,多选翻页后,之前选择的数据丢失问题处理
  • 黑马教程强化day2-1
  • JAVA毕业设计227—基于SpringBoot+hadoop+spark+Vue的大数据房屋维修系统(源代码+数据库)
  • Linux 文件内容的查询与统计
  • xilinx的gt的ALIGN_COMMA_WORD设置的作用
  • UE5 学习系列(五)导入贴图资产
  • 纯血Harmony NETX 5小游戏实践:2048(附源文件)
  • vuetify、nuxt报错lh.at is not a functionlh.at‘ is undefined
  • R语言 | 如何使用R书写html文档?
  • 打造超轻量的仿chatgpt的AI聊天应用
  • IDEA 连接 Docker 一键打镜像
  • LHM深度技术解析:基于多模态Transformer的单图秒级可动画3D人体重建模型
  • 2025.06.11【Ribo-seq】|根据注释文件获取外显子及ORF序列
  • Unity基础-Resources资源动态加载
  • 大模型在输尿管上段积脓预测与治疗方案制定中的应用研究
  • 传输层协议TCP(下)
  • AJAX、Axios 与 Fetch:现代前端数据请求技术对比
  • 提升iOS开发效率:通过KeyMob等工具进行全面性能分析与调试
  • 解决windows下pycharm终端conda无法激活虚拟环境问题
  • IntelliJ IDEA代码提示忽略大小写设置详解
  • TRO警报,Kim Haskins维权进行时:卖猫周边或面临TRO冻结?
  • 【群体结构ADMIXTURE之三】监督分群在祖先成分分析中的应用及原理
  • 建站SEO优化之站点地图sitemap
  • 调试`build.sh` 和用 `CMake` 编译出来的 `.elf` / `.bin` / `.hex` 文件大小或行为不同?
  • 重构技术奇点的路径:三智双融认知大飞跃
  • 如何设计一个用于大规模生产任务的人工智能AI系统