実現したいこと
エラーの原因を特定して、改善したいです。
発生している問題・分からないこと
スタートボタンを押してもプログラムが動いてくれません。
エラーメッセージ
error
1(ブラウザ) 2main.jsのsound.load()にてエラーが発生しましたsound.jsのload({})にてエラーをキャッチ 3 msgErr: undefined 4 5(コンソール) 623:09:42.567 msgErr: undefined main.js:157:21 723:09:42.575 msgErr: sound.jsのload({})にてエラーをキャッチ 8 msgErr: undefined main.js:157:21
該当のソースコード
// sound.js /** * オーディオファイルをロードするメソッド * * @param {string } path - オーディオファイルのパス * @param {function} callback - ファイルのロード完了時に呼ばれるコールバック関数 */ load({path, callback}) { // fetchを利用してオーディオファイルをロードする fetch(path) .then( res => res.arrayBuffer() ) // 1 .then( buf => this.ctx.decodeAudioData(buf) ) // 2 .then( decodedAudio => { // 再利用できるようにするためにAudioBufferをプロパティに確保しておく this.src = decodedAudio; // 準備完了したのでコールバック関数を呼び出す callback({}); } ) .catch( () => callback( {msgErr: `sound.jsのload({})にてエラーをキャッチ \n msgErr: ${window.msgErr}`} )); // 3 // 1. ロード完了したレスポンスからAudioBuffer生成のためのデータを取り出す // 2. 取り出したデータからAudioBufferを生成する // 3. 何かしらのエラーが発生した場合 } // load({path, callback}) {} // main.js // スタートボタンが押されたときに初期化が実行されるようにする btn.addEventListener( 'click', /** * スタートボタンが押された際に実行される関数 * * @callback */ () => { // ボタンを複数回押すことができないようにdisabled属性を付与する btn.disabled = true; // ユーザーがクリック操作を行った際に初めてオーディオ関連の処理を開始する sound = new Sound(); // 音声データを読み込み、準備完了してから初期化処理を行う sound.load({ path: './sound/explosion.mp3', /** * エラーが発生した際に実行される関数 * * @callback * @param {string} [msgErr]- エラー発生時のメッセージ */ callback: ({msgErr}) => { window.msgErr = msgErr; console.log(`msgErr: ${window.msgErr}`); // もしエラーが発生した場合はアラートを表示して終了する if (msgErr != null) { alert(`main.jsのsound.load()にてエラーが発生しました${window.msgErr}`); return; } // 初期化処理を行う init(); // インスタンスの状態を確認する loadChk(); } // callback: ({msgErr}) => {} }); // sound.load() }, // () => {} false ); // btn.addEventListener()
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
特に何も得られませんでした。
補足
「グラフィックスプログラミング入門のオリジナル」という専門書で勉強しています。
今まで得た知識を活用するために、書籍に書かれているコードを自分なりに編集しています。
コードは下記のURLからダウンロード出来ます。
https://26.gigafile.nu/1117-f83c932aa3bffe3972c1c563d5679eb2
回答1件
あなたの回答
tips
プレビュー