在“touchstart”上播放音频然后在“touchend”上暂停音频时遇到问题。我正在使用 Howler.JS 库来做到这一点

Posted

技术标签:

【中文标题】在“touchstart”上播放音频然后在“touchend”上暂停音频时遇到问题。我正在使用 Howler.JS 库来做到这一点【英文标题】:Having trouble playing audio on "touchstart" and then pausing audio on "touchend". I am using Howler.JS library to do so 【发布时间】:2021-12-31 17:18:46 【问题描述】:

无法在“touchstart”上播放音频,然后在“touchend”上暂停音频。我正在使用 Howler.JS 库来执行此操作。如果您能提供帮助,请告诉我。目标是在用户触摸屏幕上的任何位置时播放一些音频。然后在用户抬起手指时暂停音频。目前,我可以在触摸屏上播放音频。但是,暂停侦听器没有响应。有什么想法吗?

Howler JS 链接:https://github.com/goldfire/howler.js

<script>
    document.addEventListener("touchstart", function(event) 
        var sound = new Howl(
            src: ['./audio/spray.mp3'],
        );
        sound.play();
    );
    document.addEventListener("touchend", function(event) 
        var sound = new Howl(
            src: ['./audio/spray.mp3'],
        );
        sound.pause();
        sound.currentTime = 0;
    );
</script>

【问题讨论】:

【参考方案1】:

很久没有使用 Howler,但我认为问题在于 Howler 声音实例不同。当你这样做时:

var sound = new Howl(
 src: ['./audio/spray.mp3'],
);

您创建具有不同 ID 的不同实例。如果我没记错的话,您可以使用 ID 暂停声音或引用同一个实例。

因此,您必须保留对正在播放的声音实例的引用。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 @CarlosMolero 你会推荐另一种方法吗?如果是这样,你能分享一下吗?另外,如果我坚持使用 Howler,您能否分享一下您将如何通过延续当前实例来暂停它?

以上是关于在“touchstart”上播放音频然后在“touchend”上暂停音频时遇到问题。我正在使用 Howler.JS 库来做到这一点的主要内容,如果未能解决你的问题,请参考以下文章

HTML5 音频:设置 currentTime 然后在 iPhone 上播放自发倒带 50-100 毫秒

录制的音频无法在设备上播放,但不能在 iOS 模拟器上播放

在 Android 的 MediaPlayer 上播放音频时遇到问题

使用Samsung录制的音频无法在iOS上播放

iPhone:AVAudioPlayer 并不总是在设备上播放音频

iOS解决APP进入后台WebView上音频继续播放问题