Vue (Nuxt) 中的音频加载事件
Audio loaded event in Vue (Nuxt)
我有一个基于 Nuxt 的 gsap (greensock) 动画,我试图仅在我正在加载的音轨可用时才开始播放该动画。
音频的HTML:
<audio id="explainer_nar" preload="auto">
<source src="/audio/explainer-nar.mp3" type="audio/mpeg" />
<source src="/audio/explainer-nar.ogg" type="audio/ogg" />
</audio>
我将 gsap 时间线存储在一个名为 gsap_anim
的方法中。在那种方法中,我使用以下方式启动上面的音频:
const narration = document.getElementById('explainer_nar')
narration.currentTime = 0
narration.play()
现在,在我的安装中,我想在开始动画之前等待音频加载,因为当我只使用以下内容时:
mounted() {
this.gsap_anim()
}
音频未播放(可能是因为尚未加载)。
那么,在 Vue(特别是 Nuxt)中,我如何为 HTML5 音频元素设置一个监听器,以便我只在加载时播放 gsap_anim
方法?
这个答案有帮助吗:
此外,如果您想确定这是一个 eventListener 问题,您可以加载您的页面,然后瞄准您的浏览器 devtools 将其发送到控制台并查看 narration.play()
是否正在播放.
这样你就可以确定是因为它还没有加载还是其他问题。
<audio>
元素在 完整媒体剪辑加载完毕后发出 canplay
event when the browser has enough data to begin playing, and the canplaythrough
event 。
您可以为 canplay
/canplaythrough
添加执行 GSAP 动画的事件侦听器:
const narration = document.getElementById('explainer_nar')
narration.addEventListener('canplay', () => {
// GSAP animation code here...
})
narration.currentTime = 0
narration.play()
我有一个基于 Nuxt 的 gsap (greensock) 动画,我试图仅在我正在加载的音轨可用时才开始播放该动画。
音频的HTML:
<audio id="explainer_nar" preload="auto">
<source src="/audio/explainer-nar.mp3" type="audio/mpeg" />
<source src="/audio/explainer-nar.ogg" type="audio/ogg" />
</audio>
我将 gsap 时间线存储在一个名为 gsap_anim
的方法中。在那种方法中,我使用以下方式启动上面的音频:
const narration = document.getElementById('explainer_nar')
narration.currentTime = 0
narration.play()
现在,在我的安装中,我想在开始动画之前等待音频加载,因为当我只使用以下内容时:
mounted() {
this.gsap_anim()
}
音频未播放(可能是因为尚未加载)。
那么,在 Vue(特别是 Nuxt)中,我如何为 HTML5 音频元素设置一个监听器,以便我只在加载时播放 gsap_anim
方法?
这个答案有帮助吗:
此外,如果您想确定这是一个 eventListener 问题,您可以加载您的页面,然后瞄准您的浏览器 devtools 将其发送到控制台并查看 narration.play()
是否正在播放.
这样你就可以确定是因为它还没有加载还是其他问题。
<audio>
元素在 完整媒体剪辑加载完毕后发出 canplay
event when the browser has enough data to begin playing, and the canplaythrough
event 。
您可以为 canplay
/canplaythrough
添加执行 GSAP 动画的事件侦听器:
const narration = document.getElementById('explainer_nar')
narration.addEventListener('canplay', () => {
// GSAP animation code here...
})
narration.currentTime = 0
narration.play()