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重要屬性
屬性 | 說明 |
| 設(shè)置音頻文件的路徑 |
| 設(shè)置音量(范圍 ) |
| 獲取/設(shè)置音頻當(dāng)前播放時間 |
| 獲取音頻的總時長(秒) |
| 是否循環(huán)播放 ( ) |
| 是否暫停狀態(tài) ( ) |
示例:
const sound = new Audio('sound/hit.mp3'); sound.volume = 0.5; // 設(shè)置音量 50% console.log(`音頻總時長:${sound.duration} 秒`);
??3.Audio重要方法
方法 | 作用 |
| 播放音頻 |
| 暫停音頻 |
| 重新加載音頻 |
| 設(shè)置播放速度(如 為 1.5 倍速播放) |
| 監(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ī) |
| 開始播放時 |
| 暫停時 |
| 播放完畢 |
| 發(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é)
需求 | 解決方案 |
簡單播放音效 |
|
防止音效被覆蓋 | 每次創(chuàng)建新的 實例 |
監(jiān)聽播放狀態(tài) |
|
避免瀏覽器攔截音頻 | 用戶點擊事件后 |
高級音效處理 |
|
這樣,你就可以在 three.js
+ cannon.js
中,使用 Audio
來播放碰撞音效啦!
到此這篇關(guān)于JavaScript Audio 對象知識點的文章就介紹到這了,更多相關(guān)js audio對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- JS使用AudioContext實現(xiàn)音頻流實時播放
- Vue使用js-audio-recorder實現(xiàn)錄制,播放與下載音頻功能
- vue使用js-audio-recorder實現(xiàn)錄音功能
- 解決Babylon.js中AudioContext was not allowed to start異常問題
- vue實現(xiàn)錄音功能js-audio-recorder帶波浪圖效果的示例
- JS指定音頻audio在某個時間點進(jìn)行播放
- js+audio實現(xiàn)音樂播放器
- JS實現(xiàn)audio音頻剪裁剪切復(fù)制播放與上傳(步驟詳解)
- 使用JavaScript為Kindeditor自定義按鈕增加Audio標(biāo)簽
相關(guān)文章
用js來刷新當(dāng)前頁面保留參數(shù)的具體實現(xiàn)
本文為大家詳細(xì)介紹下如何使用js來刷新當(dāng)前頁面保留參數(shù),下面有個不錯的實現(xiàn)大家可以看看2013-12-12Three.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