欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript Audio 對象知識點整理

 更新時間:2025年07月08日 11:00:11   作者:泫凝  
Audio對象是JavaScript內(nèi)置的 API,用于在網(wǎng)頁中播放音頻文件,可以通過new Audio()創(chuàng)建音頻對象,也可以使用HTMLAudioElement的各種方法控制音頻播放,本文給大家介紹JavaScript Audio 對象知識點,感興趣的朋友一起看看吧

Audio 對象是 JavaScript 內(nèi)置的 API,用于在網(wǎng)頁中播放音頻文件。可以通過 new Audio() 創(chuàng)建音頻對象,也可以使用 HTMLAudioElement 的各種方法控制音頻播放。

??1. 創(chuàng)建Audio對象

方法 1:使用new Audio()

const sound = new Audio('sound/hit.mp3');
sound.play();
  • 適合簡單的音效播放
  • 但同一個 Audio 實例同時只能播放一個音效,如果短時間內(nèi)多次觸發(fā),會導(dǎo)致音頻被打斷

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

const sound = document.createElement('audio');
sound.src = 'sound/hit.mp3';
document.body.appendChild(sound);
sound.play();
  • 適用于更復(fù)雜的音頻控制,比如動態(tài)修改 src 或監(jiān)聽 ended 事件。

??2.Audio重要屬性

屬性

說明

src

設(shè)置音頻文件的路徑

volume

設(shè)置音量(范圍 0.0 ~ 1.0

currentTime

獲取/設(shè)置音頻當(dāng)前播放時間

duration

獲取音頻的總時長(秒)

loop

是否循環(huán)播放 (true/false

)

paused

是否暫停狀態(tài) (true/false

)

示例:

const sound = new Audio('sound/hit.mp3');
sound.volume = 0.5; // 設(shè)置音量 50%
console.log(`音頻總時長:${sound.duration} 秒`);

??3.Audio重要方法

方法

作用

play()

播放音頻

pause()

暫停音頻

load()

重新加載音頻

playbackRate

設(shè)置播放速度(如 1.5

為 1.5 倍速播放)

addEventListener('ended', callback)

監(jiān)聽音頻播放結(jié)束事件

示例:

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

??4. 處理多個音效

如果想在短時間內(nèi)播放多個音效(比如游戲中的子彈聲音),使用 多個 Audio 實例:

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

這樣可以避免 Audio 被覆蓋的問題。

??5. 解決瀏覽器的自動播放限制

現(xiàn)代瀏覽器禁止網(wǎng)頁自動播放音頻,需要用戶交互(如點擊)后才能播放:

document.addEventListener('click', () => {
    const sound = new Audio('sound/hit.mp3');
    sound.play().catch(err => console.log('音頻播放失敗:', err));
}, { once: true });
  • catch() 處理播放失敗的情況
  • { once: true } 確保只觸發(fā)一次

??6. 監(jiān)聽音頻事件

Audio 對象支持多種事件,可以監(jiān)聽音頻的狀態(tài):

事件

觸發(fā)時機(jī)

play

開始播放時

pause

暫停時

ended

播放完畢

error

發(fā)生錯誤

示例:

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

??7. 使用Web Audio API(高級玩法)

如果需要更精細(xì)的音效控制,比如:

  • 3D 音效
  • 混音
  • 音頻可視化 可以使用 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();

但相比 Audio,Web Audio API 更復(fù)雜,適合需要高級音效處理的場景。

??8. 總結(jié)

需求

解決方案

簡單播放音效

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

防止音效被覆蓋

每次創(chuàng)建新的 Audio

實例

監(jiān)聽播放狀態(tài)

addEventListener('ended', callback)

避免瀏覽器攔截音頻

用戶點擊事件后 play()

高級音效處理

Web Audio API

這樣,你就可以在 three.js + cannon.js 中,使用 Audio 來播放碰撞音效啦! 

到此這篇關(guān)于JavaScript Audio 對象知識點的文章就介紹到這了,更多相關(guān)js audio對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用js來刷新當(dāng)前頁面保留參數(shù)的具體實現(xiàn)

    用js來刷新當(dāng)前頁面保留參數(shù)的具體實現(xiàn)

    本文為大家詳細(xì)介紹下如何使用js來刷新當(dāng)前頁面保留參數(shù),下面有個不錯的實現(xiàn)大家可以看看
    2013-12-12
  • JS Ajax請求如何防止重復(fù)提交

    JS Ajax請求如何防止重復(fù)提交

    這篇文章主要介紹了JS Ajax請求如何防止重復(fù)提交的相關(guān)資料,通過覆蓋掉$.ajax而達(dá)到防止重復(fù)提交的問題,實現(xiàn)代碼簡單,需要的朋友可以參考下
    2016-06-06
  • Three.js實現(xiàn)瀏覽器變動時進(jìn)行自適應(yīng)的方法

    Three.js實現(xiàn)瀏覽器變動時進(jìn)行自適應(yīng)的方法

    這篇文章主要給大家介紹了關(guān)于Three.js實現(xiàn)瀏覽器變動時進(jìn)行自適應(yīng)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • TypeScript中的never類型你了解嗎

    TypeScript中的never類型你了解嗎

    TypeScript 中的 never 類型,表示:永遠(yuǎn)不會發(fā)生的值的類型,換句話說,就是不可能存在的類型,即沒有值的類型,那么你了解TypeScript中的never類型嗎,感興趣的朋友跟著小編一起來看看吧
    2023-10-10
  • 微信小程序新增的拖動組件movable-view使用教程

    微信小程序新增的拖動組件movable-view使用教程

    這篇文章主要給大家介紹了微信小程序最近新增的拖動組件movable-view的簡單使用教程,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • RequireJS入門一之實現(xiàn)第一個例子

    RequireJS入門一之實現(xiàn)第一個例子

    RequireJS由James Burke創(chuàng)建,他也是AMD規(guī)范的創(chuàng)始人。大家知道我們?yōu)槭裁匆獙W(xué)習(xí)requirejs嗎?帶著這個疑問來學(xué)習(xí)本篇文章吧,感興趣的朋友一起學(xué)習(xí)RequireJS入門一之實現(xiàn)第一個例子吧
    2015-09-09
  • JS動態(tài)日期時間的獲取方法

    JS動態(tài)日期時間的獲取方法

    這篇文章主要介紹了js獲得當(dāng)前系統(tǒng)日期時間的方法,涉及javascript操作日期時間的相關(guān)技巧,非常簡單實用,需要的朋友可以參考下
    2015-09-09
  • 鼠標(biāo)右擊事件代碼(asp.net后臺)

    鼠標(biāo)右擊事件代碼(asp.net后臺)

    本程序由一個js文件和aspx文件組成,沒有后臺CS代碼。
    2011-01-01
  • 輕松實現(xiàn)Bootstrap圖片輪播

    輕松實現(xiàn)Bootstrap圖片輪播

    這篇文章主要介紹了全面解析Bootstrap圖片輪播效果,Bootstrap提供了carousel插件,實現(xiàn)圖片輪播非常方便,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • uniapp獲取底部安全距離以及狀態(tài)欄高度等

    uniapp獲取底部安全距離以及狀態(tài)欄高度等

    最近在用uniapp開發(fā)的時候遇到了一些問題,下面這篇文章主要給大家介紹了關(guān)于uniapp獲取底部安全距離以及狀態(tài)欄高度等的相關(guān)資料,需要的朋友可以參考下
    2022-10-10

最新評論