使用 js 类封装项目中音频播放功能的工具方法utils
在前端开发中,音频播放功能是一个常见的需求,我们经常需要在项目中加入音频播放、音频提示等功能。为了提高开发效率和代码复用性,我们可以封装一个工具方法来管理音频播放功能。
在本文中,我将介绍如何封装项目中音频播放功能的工具方法,以便在项目中快速集成音频播放功能。
1. 创建音频播放器类
首先,我们可以创建一个AudioPlayer类来管理音频播放功能。在这个类中,我们可以定义一些常用的方法,如play、pause、stop等,来控制音频的播放状态。
// utils/index.js
export class AudioPlayer {constructor(src) {this.audio = new Audio(src);}play() {this.audio.play();}pause() {this.audio.pause();}stop() {this.audio.pause();this.audio.currentTime = 0;}
}
2. 初始化音频播放器
在使用音频播放功能之前,我们需要先初始化一个音频播放器实例,并指定音频文件的路径。
// 项目中使用
import { AudioPlayer } from '@/utils'
const audioSrc = 'path/to/audio.mp3';
const player = new AudioPlayer(audioSrc);
3. 控制音频的播放
一旦初始化了音频播放器实例,我们就可以通过调用play、pause、stop等方法来控制音频的播放状态。
// 播放音频
player.play();// 暂停音频
player.pause();// 停止音频
player.stop();
4. 添加事件监听器
除了基本的播放控制方法外,我们还可以为音频播放器添加一些事件监听器,以便在音频播放过程中执行一些特定的操作。
player.audio.addEventListener('ended', () => {console.log('音频播放结束');
});
5. 封装更多功能
除了基本的播放控制方法外,我们还可以封装更多功能,如设置音量、设置循环播放、获取音频时长等。
class AudioPlayer {constructor(src) {this.audio = new Audio(src);}play() {this.audio.play();}pause() {this.audio.pause();}stop() {this.audio.pause();this.audio.currentTime = 0;}setVolume(volume) {this.audio.volume = volume;}setLoop(loop) {this.audio.loop = loop;}getDuration() {return this.audio.duration;}
}
6. 总结
通过封装项目中音频播放功能的工具方法,我们可以更好地管理和控制音频播放功能,提高开发效率和代码复用性。希术本文介绍的方法能够帮助您在项目中快速集成音频播放功能,并实现更多定制化的功能。
希望本文对您有所帮助,谢谢阅读!
相关文章:
使用 js 类封装项目中音频播放功能的工具方法utils
在前端开发中,音频播放功能是一个常见的需求,我们经常需要在项目中加入音频播放、音频提示等功能。为了提高开发效率和代码复用性,我们可以封装一个工具方法来管理音频播放功能。 在本文中,我将介绍如何封装项目中音频播放功能的…...
【超详细】R语言贝叶斯方法在生态环境领域中的高阶技术应用
查看原文>>>R语言贝叶斯方法在生态环境领域中的高阶技术应用 目录 专题一:前期资料 专题二:R和Rstudio入门和绘图(含ggplot) 专题三:R语言数据清洗-tidyverse包应用 专题四:贝叶斯回归模型-回…...
Python 正则表达式 re . 符号
Python 正则表达式 re . 符号 正文示例1示例2 正文 用法说明:(点号) 在默认模式下,匹配除换行符以外的任意字符。 如果指定了 flags 参数 DOTALL ,它将匹配包括换行符在内的任意字符。 示例1 import restr1 abcde print(re.search(., str…...
智慧监控 高效运维
随着企业IT建设的不断深入和完善,IT管理的重要性逐渐被重视,打通数据割裂,使业务更加充分融合。亟需一套统一的平台来实现跨品牌跨设备类型的集中监控和管理。 LinkSLA带外监控平台,不仅适用于大规模或超大规模的运维场景&#x…...
JAVA每日面试题(一)
Java面试问题及答案 1. 解释Java中的垃圾回收机制和如何优化它 问题: 在Java中,垃圾回收(Garbage Collection, GC)是如何工作的?作为一名Java开发者,你如何优化垃圾回收以提高应用性能? 答案…...
Java数组创建与使用
一.创建和初始化 1.数组是怎么创建的? 直接举例子: int[] arr new int[10]; 这里只简单的举一个int开辟数组的例子。 可见java数组的创建于C语言是不同的。前面是一个int[ ]就是一个数组的数据类型,后面的arr是数组名,最后[…...
EMAP如何建数据源
新建数据源: EMAP底座的数据源,名称为“DB_EMAP_BIZ_BASE",不可随意更改. 新建业务系统数据源,名称为”DB_STUDY_BIZ_BASE". 支持的数据库: 支持两种类型数据库:H2 和 oracle 新建H2数据源&am…...
在 Linux 中创建文件
目录 ⛳️推荐 前言 使用 touch 命令创建一个新的空文件 使用 echo 命令创建一个新文件 使用 cat 命令创建新文件 测试你的知识 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到…...
高德地图+HTML+点击事件+自定心信息窗体
代码如下 <!doctype html> <html><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"initial-scale1.0, user-scalableno, width…...
流畅的python-学习笔记_协议+继承优缺点
接口和协议 python动态语言,没有interface等概念,接口和协议方法有的也有替代品,所以类似于鸭子类型,只关注行为像鸭子,不关注它是不是鸭子。不是每个接口都得实现,这是允许的 猴子补丁 可动态给对象添加…...
哪个文件加密软件好?迅软加密软件特性解析
哪个文件加密软件好? 这里推荐一款好用的文件加密软件,迅软DSE加密软件,有17年的加密经验了,已为三十万企业解决信息安全问题。简单易用,兼容性强,各类型文件都可加密。完善的售后保障,各地有服…...
Ubuntu 根目录扩容
环境 物理机:MacBook Air M2 Sonoma 14.4.1 虚拟机:VMware Fusion Player 13.5.0 镜像:Jammy Desktop ARM64 步骤 删除所有快照,关闭镜像,在 vm 上找到该镜像的硬盘设置,进行扩容; 开启镜像&am…...
人证比对API接口如何对接
人证比对API接口全称叫人脸身份证比对API接口也叫人脸实名认证API接口、实人认证API接口,指的是输入姓名、身份证号码和头像照片,与公安库身份证头像进行权威比对,返回比较结果。那么人脸身份证比对API接口该如何对接呢? 首先我们…...
NIO(非阻塞I/O)和IO(阻塞I/O)详解
文章目录 一、NIO(Non-blocking I/O,非阻塞I/O)1、Channel(通道)2、Buffer(缓冲区)1、ByteBuffer 读取文件2、ByteBuffer 的常用方法2、ByteBuffer 的结构详解3、ByteBuffer 与字符串互转4、Sca…...
【网络】传输层的特点总结
1传输层协议 传输层主要有两个常见的协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP 提供可靠的、面向连接的通信服务,适用于对数据传输可靠性要求高的场景,如网页浏览、文件传输等。而 UD…...
Scala 多版本下载指南
Scala,这一功能丰富的编程语言,结合了面向对象和函数式编程的精华,为开发者提供了强大的工具来构建高效、可扩展的应用程序。随着Scala社区的不断壮大和技术的演进,多个版本的Scala被广泛应用于不同的项目与场景中。本文旨在为您提…...
已经安装tensorflow,仍报错No module named ‘tensorflow‘
在安装某些python虚拟环境的教程文章中,经常看到有评论区说安装了但是调用显示无模块,例如pytorch和tensorflow等等。 其实跟之前我写过的一篇文章解决方法类似,就是python项目中需要应用哪个虚拟环境,这个项目的python解释器就选…...
五一 作业
#include <iostream>using namespace std; class Num { private:int a; public:Num() {}Num(int a):a(a){}//设置a的值void set(int a){this->aa;}//1-a的和void Sum(){if(a<1){cout<<"a<1"<<endl;return;}int sum0;for(int i1;i<a;i)…...
TesseractOCR安装及使用
1. 基本概念 1.1 Tesseract Tesseract 是一款基于 C 语言开发并开源的光学识别工具,提供底层的文字识别能力。 1.2 Tess4J Tess4J 是对 Tesseract OCR API 的 Java 封装,有了 Tess4J 之后 Java 就可以直接调用本地安装的 Tesseract 进行文字识别。 …...
npm安装指定版本,npm删除依赖,卸载依赖
安装指定版本 npm中安装指定的版本号,格式为 ‘包名版本号’ npm install 包名称版本号 --save 例如安装jquery: npm install jquery3.0.0 --save在package.json里面可以看到对应的包: "jquery": "^3.0.0"注意:已有…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
