From 297bba323e8583bf376c1e07025610f1c8069a39 Mon Sep 17 00:00:00 2001 From: ShinobuTakahashi Date: Thu, 25 Apr 2024 19:25:33 +0900 Subject: [PATCH 1/4] Fix HTMLAudioPlayer#Play() --- src/plugin/HTMLAudioPlugin/HTMLAudioPlayer.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/plugin/HTMLAudioPlugin/HTMLAudioPlayer.ts b/src/plugin/HTMLAudioPlugin/HTMLAudioPlayer.ts index 221e297..50af632 100644 --- a/src/plugin/HTMLAudioPlugin/HTMLAudioPlayer.ts +++ b/src/plugin/HTMLAudioPlugin/HTMLAudioPlayer.ts @@ -27,6 +27,14 @@ export class HTMLAudioPlayer extends AudioPlayer { play(asset: HTMLAudioAsset): void { if (this.currentAudio) { + if (asset.id === this.currentAudio.id) { + // 同一 audio を 連続で再生処理を行うとエラーとなる。これは audio.play() が非同期で開始されるためである。 + // 上記対応で、現在再生中とこれから再生する audio が同じ場合は現在の audio を先頭から再生し、これから再生する audio は何もしないようにする。 + super.stop(); + this._audioInstance!.currentTime = 0; + super.play(asset); + return; + } this.stop(); } const audio = asset.cloneElement(); From e8264d29d64cf946a233f6e9c80aa7ee9e354a45 Mon Sep 17 00:00:00 2001 From: ShinobuTakahashi Date: Thu, 25 Apr 2024 19:26:32 +0900 Subject: [PATCH 2/4] bump version --- CHANGELOG.md | 3 +++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4753b6d..83e6450 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # CHANGELOG +## 2.9.2 +* `HTMLAudioPlayer#play()` で同じ audio が連続で再生された時にエラーとなる不具合を修正 + ## 2.9.1 * View の外をクリック時に `pointDown` イベントが発生しないよう修正 diff --git a/package-lock.json b/package-lock.json index ff66356..ec253ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@akashic/pdi-browser", - "version": "2.9.1", + "version": "2.9.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@akashic/pdi-browser", - "version": "2.9.1", + "version": "2.9.2", "license": "MIT", "dependencies": { "@akashic/trigger": "^2.0.1" diff --git a/package.json b/package.json index dcbffa5..ada728e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@akashic/pdi-browser", - "version": "2.9.1", + "version": "2.9.2", "description": "An akashic-pdi implementation for Web browsers", "main": "index.js", "typings": "lib/full/index.d.ts", From 5b7a6d82aaeb855d2ec01d8284c7b1b0d603ac49 Mon Sep 17 00:00:00 2001 From: ShinobuTakahashi Date: Fri, 26 Apr 2024 10:32:52 +0900 Subject: [PATCH 3/4] Fix comment --- src/plugin/HTMLAudioPlugin/HTMLAudioPlayer.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plugin/HTMLAudioPlugin/HTMLAudioPlayer.ts b/src/plugin/HTMLAudioPlugin/HTMLAudioPlayer.ts index 50af632..1bf118f 100644 --- a/src/plugin/HTMLAudioPlugin/HTMLAudioPlayer.ts +++ b/src/plugin/HTMLAudioPlugin/HTMLAudioPlayer.ts @@ -28,13 +28,13 @@ export class HTMLAudioPlayer extends AudioPlayer { play(asset: HTMLAudioAsset): void { if (this.currentAudio) { if (asset.id === this.currentAudio.id) { - // 同一 audio を 連続で再生処理を行うとエラーとなる。これは audio.play() が非同期で開始されるためである。 - // 上記対応で、現在再生中とこれから再生する audio が同じ場合は現在の audio を先頭から再生し、これから再生する audio は何もしないようにする。 + // 同じ audio を 連続で再生するとエラーとなる。これは audio.play() が非同期で開始されるためである。 + // 現在再生中とこれから再生しようとする audio が同じ場合は現在の audio を先頭から再生し、これから再生しようとする audio は何もしないようにする。 super.stop(); this._audioInstance!.currentTime = 0; super.play(asset); return; - } + } this.stop(); } const audio = asset.cloneElement(); From 4f7a817f6f196380f731aefbfe0ede51c2aac323 Mon Sep 17 00:00:00 2001 From: ShinobuTakahashi Date: Fri, 26 Apr 2024 16:15:24 +0900 Subject: [PATCH 4/4] Fix HTMLAudioPlayer --- src/plugin/HTMLAudioPlugin/HTMLAudioPlayer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugin/HTMLAudioPlugin/HTMLAudioPlayer.ts b/src/plugin/HTMLAudioPlugin/HTMLAudioPlayer.ts index 1bf118f..fd921f5 100644 --- a/src/plugin/HTMLAudioPlugin/HTMLAudioPlayer.ts +++ b/src/plugin/HTMLAudioPlugin/HTMLAudioPlayer.ts @@ -31,7 +31,7 @@ export class HTMLAudioPlayer extends AudioPlayer { // 同じ audio を 連続で再生するとエラーとなる。これは audio.play() が非同期で開始されるためである。 // 現在再生中とこれから再生しようとする audio が同じ場合は現在の audio を先頭から再生し、これから再生しようとする audio は何もしないようにする。 super.stop(); - this._audioInstance!.currentTime = 0; + this._audioInstance!.currentTime = (asset.offset ?? 0) / 1000; super.play(asset); return; }