javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > js audio对象

JavaScript Audio 对象知识点整理

作者:泫凝

Audio对象是JavaScript内置的 API,用于在网页中播放音频文件,可以通过new Audio()创建音频对象,也可以使用HTMLAudioElement的各种方法控制音频播放,本文给大家介绍JavaScript Audio 对象知识点,感兴趣的朋友一起看看吧

Audio 对象是 JavaScript 内置的 API,用于在网页中播放音频文件。可以通过 new Audio() 创建音频对象,也可以使用 HTMLAudioElement 的各种方法控制音频播放。

📌1. 创建Audio对象

方法 1:使用new Audio()

const sound = new Audio('sound/hit.mp3');
sound.play();

方法 2:使用document.createElement('audio')

const sound = document.createElement('audio');
sound.src = 'sound/hit.mp3';
document.body.appendChild(sound);
sound.play();

📌2.Audio重要属性

属性

说明

src

设置音频文件的路径

volume

设置音量(范围 0.0 ~ 1.0

currentTime

获取/设置音频当前播放时间

duration

获取音频的总时长(秒)

loop

是否循环播放 (true/false

)

paused

是否暂停状态 (true/false

)

示例:

const sound = new Audio('sound/hit.mp3');
sound.volume = 0.5; // 设置音量 50%
console.log(`音频总时长:${sound.duration} 秒`);

📌3.Audio重要方法

方法

作用

play()

播放音频

pause()

暂停音频

load()

重新加载音频

playbackRate

设置播放速度(如 1.5

为 1.5 倍速播放)

addEventListener('ended', callback)

监听音频播放结束事件

示例:

const sound = new Audio('sound/hit.mp3');
// 播放音频
sound.play();
// 2秒后暂停
setTimeout(() => {
    sound.pause();
    console.log('音频已暂停');
}, 2000);

📌4. 处理多个音效

如果想在短时间内播放多个音效(比如游戏中的子弹声音),使用 多个 Audio 实例:

const playSound = () => {
    const sound = new Audio('sound/hit.mp3');
    sound.volume = Math.random(); // 随机音量
    sound.play();
};
document.addEventListener('click', playSound);

这样可以避免 Audio 被覆盖的问题。

📌5. 解决浏览器的自动播放限制

现代浏览器禁止网页自动播放音频,需要用户交互(如点击)后才能播放:

document.addEventListener('click', () => {
    const sound = new Audio('sound/hit.mp3');
    sound.play().catch(err => console.log('音频播放失败:', err));
}, { once: true });

📌6. 监听音频事件

Audio 对象支持多种事件,可以监听音频的状态:

事件

触发时机

play

开始播放时

pause

暂停时

ended

播放完毕

error

发生错误

示例:

const sound = new Audio('sound/hit.mp3');
sound.addEventListener('ended', () => {
    console.log('音频播放完毕');
});
sound.play();

📌7. 使用Web Audio API(高级玩法)

如果需要更精细的音效控制,比如:

const audioContext = new (window.AudioContext || window.webkitAudioContext)();
const sound = new Audio('sound/hit.mp3');
const track = audioContext.createMediaElementSource(sound);
track.connect(audioContext.destination);
sound.play();

但相比 AudioWeb Audio API 更复杂,适合需要高级音效处理的场景。

📌8. 总结

需求

解决方案

简单播放音效

new Audio('sound.mp3').play();

防止音效被覆盖

每次创建新的 Audio

实例

监听播放状态

addEventListener('ended', callback)

避免浏览器拦截音频

用户点击事件后 play()

高级音效处理

Web Audio API

这样,你就可以在 three.js + cannon.js 中,使用 Audio 来播放碰撞音效啦! 

到此这篇关于JavaScript Audio 对象知识点的文章就介绍到这了,更多相关js audio对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文