A-Frame シーンで A-Sound を再生しようとすると、Safari が 2 回目に InvalidStateError をスローします。
- AR.js マーカーが表示されたときにサウンドを再生しようとしました (そのためのイベントはありません)。
- マーカーの可視性が変化するかどうかを確認し、それに応じて A サウンドを再生/一時停止する新しいコンポーネントを定義しました。
- Chrome では問題なく動作しますが、Safari では「InvalidStateError: オブジェクトが無効な状態です」という例外がスローされます。
マークアップ:
<a-sound
id="halloween2018-sound"
src="/sounds/halloween2018-funny.mp3"
autoplay="false"
loop="true"
soundhandler
>
</a-sound>
Javascript:
AFRAME.registerComponent('soundhandler', {
tick: function () {
var soundEntity = this.el;
if (markerGotVisible && !soundEntity.components.sound.isPlaying) {
soundEntity.components.sound.playSound();
}
else if(markerGotHidden && soundEntity.components.sound.isPlaying){
soundEntity.components.sound.pauseSound();
}
}
}