Javascript 检测声音以3.5秒音频结束?
我想检测声音何时结束,但我发现所有的例子都不起作用Javascript 检测声音以3.5秒音频结束?,javascript,audio,three.js,Javascript,Audio,Three.js,我想检测声音何时结束,但我发现所有的例子都不起作用 // Create sound var sound1 = new THREE.PositionalAudio( listener ); sound1.load( 'sounds/Example.ogg' ); sound1.setRefDistance( 30 ); sound1.autoplay = false; sound1.setLoop(false); mesh1.add( sound1 ); // Start sound setTi
// Create sound
var sound1 = new THREE.PositionalAudio( listener );
sound1.load( 'sounds/Example.ogg' );
sound1.setRefDistance( 30 );
sound1.autoplay = false;
sound1.setLoop(false);
mesh1.add( sound1 );
// Start sound
setTimeout(function() {
sound1.play();
}, 2000);
// Try to detect end #1
sound1.onended = function() {
console.log('sound1 ended #1');
};
// Try to detect end #1
sound1.addEventListener('ended', function() {
console.log('sound1 ended #2');
});
实时示例:
三个。音频是缓冲区源音频对象的包装
看起来它覆盖了onended事件并将其绑定到自己的函数,所以我们也会这样做:
sound1.source.onended = function() {
console.log('sound1 ended');
this.isPlaying = false; /* sets Three wrapper property correctly */
};
我们设置了isplay=false
,因为这是我们刚刚重写的内容
工作笔:我必须在2020年解决这个问题。一开始我并没有正确地查看文档,但它似乎是正确列出的
与之前的正确答案类似,但现在有点不同(该解决方案不适用于我):
var sound1=新的三位音频(监听器);
sound1.oneded=()=>console.log(“曲目结束”)
以下是相应的文档:
基本上没有多少:
.onEnded():null
播放完成时自动调用
对我不起作用的事情:
sound1.oneded(()=>{})
el.object3D.source.onended(()=>{})
sound1.source.onended(()=>{});//先前的答复
如果你这样做,你可以截获一个电话,但我认为这不再是必要的:
THREE.Audio.prototype.oneded=function(){
console.warn(“参数到onEnded!”,参数)
};
谢谢!你知道如何检测onLoad/onReady声音事件吗?这有点复杂,我找不到一个好方法来做它,除了覆盖三个函数中的一个。Audio的函数(完成)我将提交一个错误报告,看看暴露其中一些事件的状态。提交的问题。如果还没有更简单的解决方案,我会尝试一下公关,以更简单的方式揭露这些事件。我认为音频在三是相当新的,因为它甚至还没有记录。。。