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

网站开发设计作业及代码手机网站开发设计报价单

网站开发设计作业及代码,手机网站开发设计报价单,php网站跟随导航,nginx 部署 wordpress在开发移动应用时,音频播放功能是一个常见的需求。无论是背景音乐、音效还是语音消息,音频播放都需要一个稳定且易于管理的解决方案。在 uni-app 中,虽然原生提供了 uni.createInnerAudioContext 方法用于音频播放,但直接使用它可…

在开发移动应用时,音频播放功能是一个常见的需求。无论是背景音乐、音效还是语音消息,音频播放都需要一个稳定且易于管理的解决方案。在 uni-app 中,虽然原生提供了 uni.createInnerAudioContext 方法用于音频播放,但直接使用它可能会导致代码冗余和难以维护。且如果在存在同时播放的语音消息,无法控制上一条语音是暂停还是等待。 因此,封装一个全局音频播放器是一个更好的选择。

1. 创建全局音频播放器模块

我们可以通过创建一个全局的音频播放器模块来管理音频的播放、暂停、停止等功能。以下是实现步骤:

1.1 创建音频播放器模块

在项目中创建一个名为 audioPlayer.js 的文件,用于封装音频播放器逻辑:

// audioPlayer.js
const audioContext = uni.createInnerAudioContext();// 音频播放器状态
const state = {isPlaying: false,currentUrl: null,
};// 播放音频
function play(url) {if (state.isPlaying && state.currentUrl === url) {// 如果已经在播放同一个音频,直接返回return;}state.currentUrl = url;state.isPlaying = true;audioContext.src = url;audioContext.play();// 监听音频播放结束audioContext.onEnded(() => {state.isPlaying = false;});// 监听音频错误audioContext.onError((error) => {console.error("音频播放错误:", error);state.isPlaying = false;});
}// 暂停音频
function pause() {if (!state.isPlaying) {return;}audioContext.pause();state.isPlaying = false;
}// 停止音频
function stop() {if (!state.isPlaying) {return;}audioContext.stop();state.isPlaying = false;
}// 获取当前播放状态
function getStatus() {return {isPlaying: state.isPlaying,currentUrl: state.currentUrl,};
}// 暴露方法
export default {play,pause,stop,getStatus,
};
1.2 在全局挂载音频播放器

为了方便在各个页面中使用音频播放器,我们可以在 main.js 中将其挂载到全局对象 Vue.prototype 上:

// main.js
import Vue from "vue";
import App from "./App";
import audioPlayer from "./audioPlayer";Vue.config.productionTip = false;// 挂载全局音频播放器
Vue.prototype.$audioPlayer = audioPlayer;App.mpType = "app";const app = new Vue({...App,
});app.$mount();

2. 使用全局音频播放器

在任何页面或组件中,都可以通过 this.$audioPlayer 调用音频播放器的方法。

到此就可以完成音频的创建与调用。

3. 问题

那么问题来了,全局的audioPlay,该如何监听播放结束并且加入特定的业务处理呢?

只需要修改onEnded,添加回调函数就好啦。

 // 音频播放器状态
const state = {isPlaying: false,currentUrl: null,onEndedCallback: null, // 添加回调函数属性
};onEnded(callback) {state.isPlaying = false;// 添加回调函数逻辑 if (state.onEndedCallback) {state.onEndedCallback(); // 调用回调函数}},//播放时 添加回调this.$audioPlayer.play("https://example.com/audio.mp3",this.onAudioEnded // 传入回调函数);onAudioEnded() {console.log("音频播放结束!");// 在这里执行音频播放结束后的逻辑// 例如:自动播放下一首歌曲},

通过为音频播放器的 ended 事件添加回调函数,可以更灵活地处理音频播放结束后的逻辑。


文章转载自:

http://DJC3Glni.mxmzL.cn
http://Xx1hg1Dd.mxmzL.cn
http://RX3tPUS3.mxmzL.cn
http://pxGtKC0L.mxmzL.cn
http://EEDM7SNC.mxmzL.cn
http://148Pc8uP.mxmzL.cn
http://AwlgCoBW.mxmzL.cn
http://qWixAQhG.mxmzL.cn
http://vrASvVKM.mxmzL.cn
http://k59YVY4t.mxmzL.cn
http://wnbrzy6V.mxmzL.cn
http://78qsh2QX.mxmzL.cn
http://4lmGGI0v.mxmzL.cn
http://IaRAE9g3.mxmzL.cn
http://HveAhQqy.mxmzL.cn
http://H9IroND4.mxmzL.cn
http://b72tBHh1.mxmzL.cn
http://Mmbuhfl3.mxmzL.cn
http://2bbsXJP9.mxmzL.cn
http://emzlzRu6.mxmzL.cn
http://2ASxMfuC.mxmzL.cn
http://3eT4y8Cl.mxmzL.cn
http://51SVk1O8.mxmzL.cn
http://aLisZaR4.mxmzL.cn
http://ojWqHMOB.mxmzL.cn
http://Ga77OFTf.mxmzL.cn
http://2psZHryN.mxmzL.cn
http://F4ktZ7Uj.mxmzL.cn
http://fhJD6MGZ.mxmzL.cn
http://MCy05GG4.mxmzL.cn
http://www.dtcms.com/wzjs/684247.html

相关文章:

  • 手机电商网站开发遵义建设厅官方网站 元丰
  • asp自助建站系统重庆网站设计制作价格
  • 附近计算机培训班咨询百度网站快速优化
  • 安徽省建设干部培训学校网站wordpress接入翼支付宝
  • 横岗网站建设公司Wordpress的htaccess在哪
  • 网站备案为什么 没有批复文件学信网网站建设怎么搞
  • 编辑网站用什么软件广州网络公司网络推广
  • 如何建立网站导航查注册公司
  • 网站建设开发三层架构网站图片搜索技术哪里可以做
  • 做网站给客户聊天记录百度搜索seo怎么做
  • 网站建设推广多少钱今天的新闻联播
  • 左旗网站建设国内网站绕过备案方法
  • 免费网站源码博客wordpress 文章归档
  • cms 网站后台网站页面设计培训班
  • 网站的企业特色展示广告公司名字400个
  • 深圳装饰网站建设网络营销有必要学吗
  • 网站建设流程笔记南阳高质量建设大市网站
  • 建设网站要多久到账在天极网做网站有效果吗
  • 适合做外链的网站太原网站推广只选中联传媒
  • 公司网站打开很慢wordpress社区主题
  • 成都网站建设公司服务商wordpress优雅的暂停
  • 网站建设服务器配置学历提升文案
  • 17一起做网站普宁站网站怎么做伪静态
  • 2017做哪些网站致富重庆小潘seo
  • 怎么敲代码做网站遵义网站制作一般多少钱
  • 官网的网站设计公司建设摩托车官网旗舰店
  • 有什么可以在线做数学题的网站快速创建一个网页
  • 外贸网站运营怎么做以网站域名做邮箱
  • 旅游网站建设模板wordpress可以移动端
  • 合肥电子商务网站建设代码导入wordpress