Pla">
無法讓 Tone Player 播放任何內容,這是我的簡單 VueJs 程式碼:
<模板>範本> <腳本> 從“tone”導入*作為Tone; 導出預設值{ 數據() { 返回 { 玩家:空, }; }, 方法: { 非同步播放() { 嘗試 { console.log("Tone.js 上下文狀態:", Tone.context.state); if (Tone.context.state !== "正在運作") { 等待 Tone.start(); console.log(“音訊上下文已啟動”); } this.player.start(); } 捕獲(錯誤){ console.error("播放時發生錯誤:", error.message, error); } }, 非同步初始化播放器() { console.log(Tone.context.state); 嘗試 { this.player = 等待新的 Tone.Player({ url: "/sounds/rain.wav", 循環:真, 自動啟動:假, }).toDestination(); this.player.loaded; } 捕獲(錯誤){ console.error(“載入音訊檔案時發生錯誤:”, error); } console.log("音訊檔案已載入", this.player.loaded); }, }, 創建(){ this.initializePlayer(); }, }; 劇本>簡單 Tone.js 示範
<按鈕樣式=”背景顏色:cadetblue;內邊距:4px 10px;” @click=“播放”>播放
我正在加載的聲音存在於正確的位置 sound/rain.wav 並且如果我在 chrome 中輸入它的路徑,瀏覽器能夠正確打開它 http://localhost:5173/sounds/rain.wav
運行應用程式得到的輸出:
了解 Tone.js 的人可以幫我讓播放器播放單一檔案嗎?我花了一整天的時間來解決這個問題,甚至使用了 GPT4,但我遇到了同樣的問題,播放器無法播放簡單的檔案。
腳本>
我猜發生錯誤是因為
播放器
尚未完成音訊的下載。建構子不回傳承諾。如果您想等待
Player
準備就緒,則需要傳遞onload
函數。透過將其包裝在 Promise 中,它可用於等待Player
準備就緒。