Pla"> 無法讓 Tone.js 播放器工作並播放單一 wav 文件-PHP中文網路問答
無法讓 Tone.js 播放器工作並播放單一 wav 文件
P粉231079976
P粉231079976 2023-09-01 10:34:17
0
1
503

無法讓 Tone Player 播放任何內容,這是我的簡單 VueJs 程式碼:

<模板>
      

簡單 Tone.js 示範

<按鈕樣式=”背景顏色:cadetblue;內邊距:4px 10px;” @click=“播放”>播放
<腳本> 從“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(); }, };

我正在加載的聲音存在於正確的位置 sound/rain.wav 並且如果我在 chrome 中輸入它的路徑,瀏覽器能夠正確打開它 http://localhost:5173/sounds/rain.wav

運行應用程式得到的輸出:

了解 Tone.js 的人可以幫我讓播放器播放單一檔案嗎?我花了一整天的時間來解決這個問題,甚至使用了 GPT4,但我遇到了同樣的問題,播放器無法播放簡單的檔案。

P粉231079976
P粉231079976

全部回覆 (1)
P粉331849987

我猜發生錯誤是因為播放器尚未完成音訊的下載。

建構子不回傳承諾。如果您想等待Player準備就緒,則需要傳遞onload函數。透過將其包裝在 Promise 中,它可用於等待Player準備就緒。

this.player = await new Promise((resolve, reject) => { const player = new Tone.Player({ loop: true, onerror: (err) => reject(err), onload: () => resolve(player), url: '/sounds/rain.wav' }); }); this.player.toDestination();
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!