音樂api

 幾個常見且功能強大的音樂 API 與相關外掛,開發者可以依據需求進行整合和應用:

  1. Meting API

    • 常見於 WordPress 等平台的外掛,能整合多個音樂來源(如網易雲音樂、QQ 音樂等),提供歌曲搜尋、播放和歌詞等功能。
    • 適用於建立網頁音樂播放器或串流介面。
      cite
  2. Spotify Web API

    • 官方提供的 API,可存取其廣大音樂庫、播放列表、推薦和用戶資料等,採用 OAuth 認證。
    • 非常適合需要深度音樂數據與互動功能的應用。
  3. Last.fm API

    • 提供音樂 scrobbling、統計、推薦和社群資訊,能整合用戶聆聽記錄與熱門趨勢。
    • 適合打造個人化音樂推薦或社群互動平台。
      cite
  4. Deezer、Napster 與 SoundCloud API

    • 各自提供音樂串流、搜尋與播放資訊,並支援 OAuth 認證。
    • 可根據服務特性選擇適合的 API。
  5. Musixmatch 與 Genius API

    • 主要用於取得歌曲歌詞與相關註釋,對於需要同步歌詞顯示或音樂資訊補充的應用相當實用。
  6. MusicBrainz API

    • 一個開放的音樂資料庫 API,提供豐富的音樂元數據、專輯和藝術家資訊,適合做音樂資料管理。
  7. 其他聚合型 API

    • 例如 GitHub 上的 sunzongzheng/musicApi(支援 Node、Android、iOS、React Native 等平台),能統一封裝多個來源的資料,方便開發跨平台應用。
      cite

此外,市面上還有 Jamendo API(以創用CC授權的免費音樂為主)、KKBOX API、JioSaavn API、Lyrics.ovh(簡單的歌詞 API)、KSoft.Si Lyrics API 等,開發者可依照應用場景(例如串流、資料搜尋、歌詞抓取)來選擇最合適的 API。

總結來說,根據不同需求—無論是建立網頁播放器、開發移動應用、或整合社群功能—以上這些外掛和 API 都是常見且值得參考的選項。




你說:
介紹音樂api 所以功能 <p class="enemy" id="enemy_41"></p> <p class="enemy" id="enemy_42"></p> <p class="enemy" id="enemy_43"></p> <p class="enemy enemy_t2" id="enemy_44"></p> <p class="enemy" id="enemy_45"></p> <p class="enemy" id="enemy_46"></p> <p class="enemy enemy_t1" id="enemy_47"></p> <p class="enemy" id="enemy_48"></p> <p class="enemy" id="enemy_49"></p> <p class="enemy" id="enemy_50"></p> <p id="finish">Congratulations! You just played a game that is written in JS and contains a total of 0 lines of code.</p> <p id="status"><strong>Help:</strong> <span class="inactive">move cursor to the field.</span><span class="active">Ships fly around the halls, click on bonuses!</span></p> </div> </div> <center> <embed src="https://www.zapsplat.com/wp-content/uploads/2015/music-game/music_zapsplat_easy_cheesy.mp3" loop="true" autostart="true" width="20" height="10"></embed> <br> <audio controls autoplay loop autostart> <source src="https://www.zapsplat.com/wp-content/uploads/2015/music-game/music_zapsplat_easy_cheesy.mp3" type="audio/mp3"> </audio> </center> </form>

這段 HTML 代碼主要展示了如何在網頁中嵌入與播放背景音樂,並搭配其他遊戲元素(例如帶有 enemy 類別的段落)來營造互動體驗。以下是對此功能的詳細介紹:

1. HTML 音訊標籤

  • <embed> 標籤
    • 這個標籤用來將外部資源(在此例中是音樂檔案)嵌入到網頁中。
    • 屬性說明:
      • src:設定音樂檔案的 URL(此處連結至 Zapsplat 提供的音樂)。
      • loop="true":表示音樂將持續循環播放。
      • autostart="true":網頁載入後自動播放音樂。
      • width 與 height 則設定了播放器的顯示尺寸(雖然此處顯示面積很小)。
  • <audio> 標籤
    • HTML5 引入的標籤,專為播放音頻而設計,並提供更完整的控制介面。
    • 屬性說明:
      • controls:顯示播放器控制介面(如播放、暫停、調整音量)。
      • autoplay 與 loop:分別代表自動播放及循環播放。
      • 內部使用 <source> 子標籤來指定音樂檔案的來源及格式(此例中為 MP3 格式)。

2. 音樂 API 的功能概述

這裡展示的並非完整的音樂 API,而是利用 HTML 提供的基本音訊播放功能。不過,若擴展到現代網頁開發中常見的音樂 API(例如 Web Audio API),可以實現更多進階功能,如:

  • 音效處理與合成
    • 動態調整音量、音調、混響效果等。
    • 進行實時音訊視覺化(譬如頻譜分析)。
  • 3D 空間音效
    • 根據使用者位置或遊戲場景,模擬出具有空間感的立體聲效果。
  • 事件驅動控制
    • 根據用戶互動或遊戲狀態,動態觸發特定音效或背景音樂變換。

3. 與遊戲的結合

在此代碼中,除了音樂播放外,還包含了一系列的 <p> 標籤,並用不同的類別(例如 enemyenemy_t1enemy_t2)來標記遊戲中的敵人或互動元素。當背景音樂播放時,整個遊戲氛圍會更加生動,而這些音效的搭配就是整體遊戲設計的重要一環。

總結

這段代碼利用基本的 HTML 音訊標籤實現了自動播放、循環播放和用戶可控的背景音樂效果。雖然它屬於最基礎的實現方式,但在網頁遊戲中能夠帶來良好的音效體驗。若需要更高階的音效控制與處理,可考慮使用如 Web Audio API 這類更強大的工具,從而實現更多元化與互動性的音樂功能。

你說:
有哪些 內建音效

在網頁設計或遊戲開發中,其實 HTML5 並沒有預先定義的「內建音效」檔案,而是提供了工具讓開發者能夠引入及處理自己的音效檔案。以下是相關說明:

1. HTML5 的音訊播放

  • <audio> 標籤:
    利用這個標籤,開發者可以將外部準備好的音效檔案(例如點擊聲、勝利提示音或背景音樂)嵌入網頁中。它支援自動播放、循環播放與控制介面。

2. Web Audio API 的強大功能

  • 動態生成與處理音效:
    Web Audio API 並不提供預設的音效,但提供了豐富的音效處理節點,讓開發者可以根據需要製作或調整音效。常用的節點包括:
    • GainNode: 用於調整音量。
    • BiquadFilterNode: 提供多種濾波效果(如低通、高通、帶通等)。
    • DelayNode: 創造延遲效果,可用於模擬迴響。
    • ConvolverNode: 可實現混響效果。
    • OscillatorNode: 用於生成正弦波、方波、鋸齒波等基礎波形,進而合成出不同的音效。

3. 應用範例

假如你想在遊戲中加入「點擊音效」或「成功提示音效」,你可以先從免費資源(如 Zapsplat、FreeSound 等)下載音效檔案,然後用 <audio> 標籤播放,或利用 Web Audio API 進行進一步的處理,例如動態調整音量、加入混響等效果。

總結

  • 內建音效檔案: HTML 與瀏覽器本身並未內建音效檔案。
  • 內建功能: 提供了播放及處理音效的工具(例如 <audio> 標籤和 Web Audio API),使得開發者可以根據需求創造或載入各種音效。

因此,所謂的「內建音效」其實是指這些 API 提供的音效處理功能,而實際的音效內容則需由開發者自行準備或從第三方資源取得。

你說:
有哪些外掛 音樂api 可以使用?

以下提供幾個常見且功能強大的音樂 API 與相關外掛,開發者可以依據需求進行整合和應用:

  1. Meting API

    • 常見於 WordPress 等平台的外掛,能整合多個音樂來源(如網易雲音樂、QQ 音樂等),提供歌曲搜尋、播放和歌詞等功能。
    • 適用於建立網頁音樂播放器或串流介面。
      cite
  2. Spotify Web API

    • 官方提供的 API,可存取其廣大音樂庫、播放列表、推薦和用戶資料等,採用 OAuth 認證。
    • 非常適合需要深度音樂數據與互動功能的應用。
  3. Last.fm API

    • 提供音樂 scrobbling、統計、推薦和社群資訊,能整合用戶聆聽記錄與熱門趨勢。
    • 適合打造個人化音樂推薦或社群互動平台。
      cite
  4. Deezer、Napster 與 SoundCloud API

    • 各自提供音樂串流、搜尋與播放資訊,並支援 OAuth 認證。
    • 可根據服務特性選擇適合的 API。
  5. Musixmatch 與 Genius API

    • 主要用於取得歌曲歌詞與相關註釋,對於需要同步歌詞顯示或音樂資訊補充的應用相當實用。
  6. MusicBrainz API

    • 一個開放的音樂資料庫 API,提供豐富的音樂元數據、專輯和藝術家資訊,適合做音樂資料管理。
  7. 其他聚合型 API

    • 例如 GitHub 上的 sunzongzheng/musicApi(支援 Node、Android、iOS、React Native 等平台),能統一封裝多個來源的資料,方便開發跨平台應用。
      cite

此外,市面上還有 Jamendo API(以創用CC授權的免費音樂為主)、KKBOX API、JioSaavn API、Lyrics.ovh(簡單的歌詞 API)、KSoft.Si Lyrics API 等,開發者可依照應用場景(例如串流、資料搜尋、歌詞抓取)來選擇最合適的 API。

總結來說,根據不同需求—無論是建立網頁播放器、開發移動應用、或整合社群功能—以上這些外掛和 API 都是常見且值得參考的選項。
cite cite

你說:
給出實際呼叫範例程式碼 適用於pokemon遊戲開發

以下提供一個使用 Web Audio API 呼叫音樂資源的範例,這份程式碼模擬在 Pokémon 遊戲中播放背景音樂與戰鬥音效的情境。你可以根據實際專案架構,將音樂檔案放在指定目錄(例如 assets 資料夾)並動態呼叫播放:

javascript
// 建立 AudioContext 物件(注意:必須由使用者互動後才能啟動) const AudioContext = window.AudioContext || window.webkitAudioContext; const audioCtx = new AudioContext(); // 非同步載入音檔的函式,回傳解碼後的 AudioBuffer async function loadAudio(url) { const response = await fetch(url); const arrayBuffer = await response.arrayBuffer(); return await audioCtx.decodeAudioData(arrayBuffer); } // 播放音效的函式,options 可設定是否循環與音量 function playAudio(buffer, options = {}) { const source = audioCtx.createBufferSource(); source.buffer = buffer; if (options.loop) { source.loop = true; } const gainNode = audioCtx.createGain(); gainNode.gain.value = options.volume !== undefined ? options.volume : 1; source.connect(gainNode); gainNode.connect(audioCtx.destination); source.start(0); return source; } // 範例:播放背景音樂(例如 Pokémon 主題音樂) async function playBackgroundMusic() { try { const bgBuffer = await loadAudio('assets/pokemon_theme.mp3'); playAudio(bgBuffer, { loop: true, volume: 0.5 }); } catch (e) { console.error("播放背景音樂失敗:", e); } } // 範例:播放戰鬥音效(例如攻擊音效) async function playAttackSound() { try { const attackBuffer = await loadAudio('assets/attack_sound.mp3'); playAudio(attackBuffer, { loop: false, volume: 1 }); } catch (e) { console.error("播放攻擊音效失敗:", e); } } // 當使用者點擊開始遊戲按鈕時觸發,必須先啟動 AudioContext document.getElementById('startGameBtn').addEventListener('click', () => { if (audioCtx.state === 'suspended') { audioCtx.resume(); } playBackgroundMusic(); }); // 模擬戰鬥中,當使用者點擊攻擊按鈕時播放攻擊音效 document.getElementById('attackBtn').addEventListener('click', () => { playAttackSound(); });

使用說明

  1. 檔案放置:

    • 請將背景音樂檔(例如 pokemon_theme.mp3)與攻擊音效檔(例如 attack_sound.mp3)存放在專案的 assets 資料夾中,或根據需求修改路徑。
  2. HTML 範例:
    你可以在 HTML 中設置兩個按鈕,用以觸發遊戲開始與攻擊事件,例如:

    html
    <button id="startGameBtn">開始遊戲</button> <button id="attackBtn">攻擊</button>
  3. 互動啟動 AudioContext:
    為符合瀏覽器自動播放政策,必須由使用者操作(例如點擊按鈕)後再啟動 AudioContext。

這份範例程式碼展示了如何利用 Web Audio API 進行音檔載入、解碼並播放,適用於開發 Pokémon 風格的遊戲中背景音樂與音效的呼叫與控制。

參考資料:
citeturn0search6(初探 Web Audio API - OXXO.STUDIO)
citeturn0search8(免費的音樂API接口大全 - CSDN博客


你說:
介紹音樂api 所以功能 <p class="enemy" id="enemy_41"></p> <p class="enemy" id="enemy_42"></p> <p class="enemy" id="enemy_43"></p> <p class="enemy enemy_t2" id="enemy_44"></p> <p class="enemy" id="enemy_45"></p> <p class="enemy" id="enemy_46"></p> <p class="enemy enemy_t1" id="enemy_47"></p> <p class="enemy" id="enemy_48"></p> <p class="enemy" id="enemy_49"></p> <p class="enemy" id="enemy_50"></p> <p id="finish">Congratulations! You just played a game that is written in JS and contains a total of 0 lines of code.</p> <p id="status"><strong>Help:</strong> <span class="inactive">move cursor to the field.</span><span class="active">Ships fly around the halls, click on bonuses!</span></p> </div> </div> <center> <embed src="https://www.zapsplat.com/wp-content/uploads/2015/music-game/music_zapsplat_easy_cheesy.mp3" loop="true" autostart="true" width="20" height="10"></embed> <br> <audio controls autoplay loop autostart> <source src="https://www.zapsplat.com/wp-content/uploads/2015/music-game/music_zapsplat_easy_cheesy.mp3" type="audio/mp3"> </audio> </center> </form>

這段 HTML 代碼主要展示了如何在網頁中嵌入與播放背景音樂,並搭配其他遊戲元素(例如帶有 enemy 類別的段落)來營造互動體驗。以下是對此功能的詳細介紹:

1. HTML 音訊標籤

  • <embed> 標籤
    • 這個標籤用來將外部資源(在此例中是音樂檔案)嵌入到網頁中。
    • 屬性說明:
      • src:設定音樂檔案的 URL(此處連結至 Zapsplat 提供的音樂)。
      • loop="true":表示音樂將持續循環播放。
      • autostart="true":網頁載入後自動播放音樂。
      • width 與 height 則設定了播放器的顯示尺寸(雖然此處顯示面積很小)。
  • <audio> 標籤
    • HTML5 引入的標籤,專為播放音頻而設計,並提供更完整的控制介面。
    • 屬性說明:
      • controls:顯示播放器控制介面(如播放、暫停、調整音量)。
      • autoplay 與 loop:分別代表自動播放及循環播放。
      • 內部使用 <source> 子標籤來指定音樂檔案的來源及格式(此例中為 MP3 格式)。

2. 音樂 API 的功能概述

這裡展示的並非完整的音樂 API,而是利用 HTML 提供的基本音訊播放功能。不過,若擴展到現代網頁開發中常見的音樂 API(例如 Web Audio API),可以實現更多進階功能,如:

  • 音效處理與合成
    • 動態調整音量、音調、混響效果等。
    • 進行實時音訊視覺化(譬如頻譜分析)。
  • 3D 空間音效
    • 根據使用者位置或遊戲場景,模擬出具有空間感的立體聲效果。
  • 事件驅動控制
    • 根據用戶互動或遊戲狀態,動態觸發特定音效或背景音樂變換。

3. 與遊戲的結合

在此代碼中,除了音樂播放外,還包含了一系列的 <p> 標籤,並用不同的類別(例如 enemyenemy_t1enemy_t2)來標記遊戲中的敵人或互動元素。當背景音樂播放時,整個遊戲氛圍會更加生動,而這些音效的搭配就是整體遊戲設計的重要一環。

總結

這段代碼利用基本的 HTML 音訊標籤實現了自動播放、循環播放和用戶可控的背景音樂效果。雖然它屬於最基礎的實現方式,但在網頁遊戲中能夠帶來良好的音效體驗。若需要更高階的音效控制與處理,可考慮使用如 Web Audio API 這類更強大的工具,從而實現更多元化與互動性的音樂功能。

你說:
有哪些 內建音效

在網頁設計或遊戲開發中,其實 HTML5 並沒有預先定義的「內建音效」檔案,而是提供了工具讓開發者能夠引入及處理自己的音效檔案。以下是相關說明:

1. HTML5 的音訊播放

  • <audio> 標籤:
    利用這個標籤,開發者可以將外部準備好的音效檔案(例如點擊聲、勝利提示音或背景音樂)嵌入網頁中。它支援自動播放、循環播放與控制介面。

2. Web Audio API 的強大功能

  • 動態生成與處理音效:
    Web Audio API 並不提供預設的音效,但提供了豐富的音效處理節點,讓開發者可以根據需要製作或調整音效。常用的節點包括:
    • GainNode: 用於調整音量。
    • BiquadFilterNode: 提供多種濾波效果(如低通、高通、帶通等)。
    • DelayNode: 創造延遲效果,可用於模擬迴響。
    • ConvolverNode: 可實現混響效果。
    • OscillatorNode: 用於生成正弦波、方波、鋸齒波等基礎波形,進而合成出不同的音效。

3. 應用範例

假如你想在遊戲中加入「點擊音效」或「成功提示音效」,你可以先從免費資源(如 Zapsplat、FreeSound 等)下載音效檔案,然後用 <audio> 標籤播放,或利用 Web Audio API 進行進一步的處理,例如動態調整音量、加入混響等效果。

總結

  • 內建音效檔案: HTML 與瀏覽器本身並未內建音效檔案。
  • 內建功能: 提供了播放及處理音效的工具(例如 <audio> 標籤和 Web Audio API),使得開發者可以根據需求創造或載入各種音效。

因此,所謂的「內建音效」其實是指這些 API 提供的音效處理功能,而實際的音效內容則需由開發者自行準備或從第三方資源取得。

你說:
有哪些外掛 音樂api 可以使用?

以下提供幾個常見且功能強大的音樂 API 與相關外掛,開發者可以依據需求進行整合和應用:

  1. Meting API

    • 常見於 WordPress 等平台的外掛,能整合多個音樂來源(如網易雲音樂、QQ 音樂等),提供歌曲搜尋、播放和歌詞等功能。
    • 適用於建立網頁音樂播放器或串流介面。
      cite
  2. Spotify Web API

    • 官方提供的 API,可存取其廣大音樂庫、播放列表、推薦和用戶資料等,採用 OAuth 認證。
    • 非常適合需要深度音樂數據與互動功能的應用。
  3. Last.fm API

    • 提供音樂 scrobbling、統計、推薦和社群資訊,能整合用戶聆聽記錄與熱門趨勢。
    • 適合打造個人化音樂推薦或社群互動平台。
      cite
  4. Deezer、Napster 與 SoundCloud API

    • 各自提供音樂串流、搜尋與播放資訊,並支援 OAuth 認證。
    • 可根據服務特性選擇適合的 API。
  5. Musixmatch 與 Genius API

    • 主要用於取得歌曲歌詞與相關註釋,對於需要同步歌詞顯示或音樂資訊補充的應用相當實用。
  6. MusicBrainz API

    • 一個開放的音樂資料庫 API,提供豐富的音樂元數據、專輯和藝術家資訊,適合做音樂資料管理。
  7. 其他聚合型 API

    • 例如 GitHub 上的 sunzongzheng/musicApi(支援 Node、Android、iOS、React Native 等平台),能統一封裝多個來源的資料,方便開發跨平台應用。
      cite

此外,市面上還有 Jamendo API(以創用CC授權的免費音樂為主)、KKBOX API、JioSaavn API、Lyrics.ovh(簡單的歌詞 API)、KSoft.Si Lyrics API 等,開發者可依照應用場景(例如串流、資料搜尋、歌詞抓取)來選擇最合適的 API。

總結來說,根據不同需求—無論是建立網頁播放器、開發移動應用、或整合社群功能—以上這些外掛和 API 都是常見且值得參考的選項。
cite cite

你說:
給出實際呼叫範例程式碼 適用於pokemon遊戲開發

以下提供一個使用 Web Audio API 呼叫音樂資源的範例,這份程式碼模擬在 Pokémon 遊戲中播放背景音樂與戰鬥音效的情境。你可以根據實際專案架構,將音樂檔案放在指定目錄(例如 assets 資料夾)並動態呼叫播放:

javascript
// 建立 AudioContext 物件(注意:必須由使用者互動後才能啟動) const AudioContext = window.AudioContext || window.webkitAudioContext; const audioCtx = new AudioContext(); // 非同步載入音檔的函式,回傳解碼後的 AudioBuffer async function loadAudio(url) { const response = await fetch(url); const arrayBuffer = await response.arrayBuffer(); return await audioCtx.decodeAudioData(arrayBuffer); } // 播放音效的函式,options 可設定是否循環與音量 function playAudio(buffer, options = {}) { const source = audioCtx.createBufferSource(); source.buffer = buffer; if (options.loop) { source.loop = true; } const gainNode = audioCtx.createGain(); gainNode.gain.value = options.volume !== undefined ? options.volume : 1; source.connect(gainNode); gainNode.connect(audioCtx.destination); source.start(0); return source; } // 範例:播放背景音樂(例如 Pokémon 主題音樂) async function playBackgroundMusic() { try { const bgBuffer = await loadAudio('assets/pokemon_theme.mp3'); playAudio(bgBuffer, { loop: true, volume: 0.5 }); } catch (e) { console.error("播放背景音樂失敗:", e); } } // 範例:播放戰鬥音效(例如攻擊音效) async function playAttackSound() { try { const attackBuffer = await loadAudio('assets/attack_sound.mp3'); playAudio(attackBuffer, { loop: false, volume: 1 }); } catch (e) { console.error("播放攻擊音效失敗:", e); } } // 當使用者點擊開始遊戲按鈕時觸發,必須先啟動 AudioContext document.getElementById('startGameBtn').addEventListener('click', () => { if (audioCtx.state === 'suspended') { audioCtx.resume(); } playBackgroundMusic(); }); // 模擬戰鬥中,當使用者點擊攻擊按鈕時播放攻擊音效 document.getElementById('attackBtn').addEventListener('click', () => { playAttackSound(); });

使用說明

  1. 檔案放置:

    • 請將背景音樂檔(例如 pokemon_theme.mp3)與攻擊音效檔(例如 attack_sound.mp3)存放在專案的 assets 資料夾中,或根據需求修改路徑。
  2. HTML 範例:
    你可以在 HTML 中設置兩個按鈕,用以觸發遊戲開始與攻擊事件,例如:

    html
    <button id="startGameBtn">開始遊戲</button> <button id="attackBtn">攻擊</button>
  3. 互動啟動 AudioContext:
    為符合瀏覽器自動播放政策,必須由使用者操作(例如點擊按鈕)後再啟動 AudioContext。

這份範例程式碼展示了如何利用 Web Audio API 進行音檔載入、解碼並播放,適用於開發 Pokémon 風格的遊戲中背景音樂與音效的呼叫與控制。

參考資料:
citeturn0search6(初探 Web Audio API - OXXO.STUDIO)
citeturn0search8(免費的音樂API接口大全 - CSDN博客)

你說:
給一個完整html 便於測試

以下是一個完整的 HTML 範例檔案,整合了 Web Audio API 呼叫音樂檔案的程式碼,模擬 Pokémon 遊戲中播放背景音樂與戰鬥音效的情境。請將音檔(例如 pokemon_theme.mp3 與 attack_sound.mp3)放在與此 HTML 同層的 assets 資料夾內,或根據需求修改路徑:

html
<!DOCTYPE html> <html lang="zh-Hant"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Pokémon 遊戲音效測試</title> <style> body { font-family: Arial, sans-serif; text-align: center; padding-top: 50px; } button { margin: 10px; padding: 10px 20px; font-size: 16px; } </style> </head> <body> <h1>Pokémon 遊戲音效測試</h1> <button id="startGameBtn">開始遊戲 (播放背景音樂)</button> <button id="attackBtn">攻擊 (播放攻擊音效)</button> <script> // 建立 AudioContext 物件(必須在使用者互動後啟動) const AudioContext = window.AudioContext || window.webkitAudioContext; const audioCtx = new AudioContext(); // 非同步載入音檔的函式,回傳解碼後的 AudioBuffer async function loadAudio(url) { const response = await fetch(url); const arrayBuffer = await response.arrayBuffer(); return await audioCtx.decodeAudioData(arrayBuffer); } // 播放音效的函式,options 可設定是否循環與音量 function playAudio(buffer, options = {}) { const source = audioCtx.createBufferSource(); source.buffer = buffer; if (options.loop) { source.loop = true; } const gainNode = audioCtx.createGain(); gainNode.gain.value = options.volume !== undefined ? options.volume : 1; source.connect(gainNode); gainNode.connect(audioCtx.destination); source.start(0); return source; } // 播放背景音樂(例如 Pokémon 主題音樂) async function playBackgroundMusic() { try { const bgBuffer = await loadAudio('assets/pokemon_theme.mp3'); playAudio(bgBuffer, { loop: true, volume: 0.5 }); } catch (e) { console.error("播放背景音樂失敗:", e); } } // 播放攻擊音效(例如攻擊時的音效) async function playAttackSound() { try { const attackBuffer = await loadAudio('assets/attack_sound.mp3'); playAudio(attackBuffer, { loop: false, volume: 1 }); } catch (e) { console.error("播放攻擊音效失敗:", e); } } // 當使用者點擊「開始遊戲」按鈕時啟動背景音樂 document.getElementById('startGameBtn').addEventListener('click', () => { if (audioCtx.state === 'suspended') { audioCtx.resume(); } playBackgroundMusic(); }); // 當使用者點擊「攻擊」按鈕時播放攻擊音效 document.getElementById('attackBtn').addEventListener('click', () => { playAttackSound(); }); </script> </body> </html>

說明

  • AudioContext 啟動:
    由於瀏覽器限制自動播放音效,必須由使用者互動(點擊按鈕)後才會啟動 AudioContext。

  • 音檔路徑:
    範例中假設音檔存放在 assets 資料夾內,請根據實際情況調整路徑。

  • 按鈕功能:
    點擊「開始遊戲」按鈕會播放背景音樂並循環;點擊「攻擊」按鈕則會播放一次攻擊音效。

這份完整的 HTML 檔案可以直接在瀏覽器中開啟進行測試