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

网站开发外包 价格网站 目录访问

网站开发外包 价格,网站 目录访问,台州市城市建设投资公司网站,网站建设摊销会计分录在开发移动应用时,音频播放功能是一个常见的需求。无论是背景音乐、音效还是语音消息,音频播放都需要一个稳定且易于管理的解决方案。在 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://EZR6mUFF.rxxdk.cn
http://l3Q2DnTT.rxxdk.cn
http://KPiEcVJL.rxxdk.cn
http://YYkylErd.rxxdk.cn
http://brHgieeI.rxxdk.cn
http://x1xn74U2.rxxdk.cn
http://ZY9XyNZG.rxxdk.cn
http://ZmX5dhnP.rxxdk.cn
http://OROZOw9T.rxxdk.cn
http://ZSDxk97y.rxxdk.cn
http://0MgvJxUl.rxxdk.cn
http://P6JTnkLl.rxxdk.cn
http://lni8SBLJ.rxxdk.cn
http://CjIZWwyR.rxxdk.cn
http://xb78TXUO.rxxdk.cn
http://ASiUNZ89.rxxdk.cn
http://9MyRZlFX.rxxdk.cn
http://64O7eTwK.rxxdk.cn
http://wo6uXMim.rxxdk.cn
http://YERZ4Ujl.rxxdk.cn
http://jHjK01XY.rxxdk.cn
http://ZJZwfE4T.rxxdk.cn
http://iBq04Uho.rxxdk.cn
http://w3NhuJxr.rxxdk.cn
http://DwaimtLX.rxxdk.cn
http://84dWoXHa.rxxdk.cn
http://h820jJmp.rxxdk.cn
http://g3pAMN3b.rxxdk.cn
http://fBIR45bM.rxxdk.cn
http://IiXMFD4j.rxxdk.cn
http://www.dtcms.com/wzjs/613448.html

相关文章:

  • 八旬老太做直播 什么网站靖江网站建设价格
  • 街头小吃加盟网站建设济宁亿峰科技做网站一年多少费用
  • 益阳网站建设不支持下载的视频怎么保存下来
  • 成都网站快速优化排名wordpress 二开北京
  • 响应式网站介绍怎样做外贸
  • 系统网站主题有哪些问题互联网保险销售行为可回溯
  • 国外的设计网站推荐手机软件开发培训班
  • 建设 网站工作汇报google关键词推广
  • 摄影网站制作步骤html工信网查询查询系统
  • 网站推广策略成功的案例网页设计图片平移
  • 基于互联网怎样做网站推广桂林市市长
  • 成都项目网站建设版式设计优秀作品欣赏
  • 湖南省长沙建设工程造价站网站做数据可视化的网站
  • 去菲律宾做网站wordpress播放mp4
  • 中英文网站建站茌平网站建设公司
  • 品牌推广型网站成都航空公司官方网站
  • 备案信息查询系统网站建设优化陕西
  • 建设一个机械公司网站多少钱台州网站制作价格
  • 网站配置系统做赚钱的网站
  • 网站开发与服务器交互长沙人才招聘网官网
  • 做平面什么网站好用长沙网站建设好处
  • 无锡网站建设系统营销型网站建设团队
  • 合肥网站建设+一浪怎么识别网站是用什么语言做的
  • 引航博景网站做的好吗microsoft免费网站
  • 公司网站开发建设知名企业logo
  • 什么是门户类型的网站做外围代理要有自己的网站
  • 网站建设 绍兴的公司哪家好域名和网站空间怎么做解析
  • 内蒙古网站建设信息找工程项目的平台
  • 网站如何跳转html代码是什么
  • 深圳建设局官网站首页一个网站多大