从 treejs AnimationMixer 中删除 EventListener
remove EventListener from treejs AnimationMixer
我有一个 AnimationMixer,我想在动画结束时附加一些逻辑。
正如文档所指示的那样——我在混音器上使用了 addEventListener,它工作正常,
但是当我试图删除监听器时它不起作用。
(我也尝试查看 hasEventListener 是否有效,但没有成功。)
简而言之-
addEventListener 的日志正在运行
但是 removeEventListener 和 hasEventListener 没有。
我错过了什么?我找不到任何解释。
非常感谢任何帮助...
this.animationMixer = new THREE.AnimationMixer(gltf.scene);
this.animationMixer.hasEventListener('finished', (e) => {
console.log('hasEvent', e); // doesn't print
});
this.animationMixer.addEventListener('finished', (e) => {
console.log('done'); // prints
this.animationMixer.removeEventListener('finished', (e) => {
console.log('removed'); // doesn't print
});
});
RemoveEventListener() accepts a second argument 知道要删除哪个事件,但删除时不会触发该功能。另外,每次应该是相同的功能,而不是新的:
function hasFinished() {
console.log(“Finished”);
}
let value = this.animationMixer.hasEventListener('finished', hasFinished);
console.log(value); // false
// Add event listener
this.animationMixer.addEventListener('finished', hasFinished);
value = this.animationMixer.hasEventListener('finished', hasFinished);
console.log(value); // true
// Remove listener
this.animationMixer.removeEventListener('finished', hasFinished);
现在该函数将在“完成”事件自行发生时触发。它不会在添加或删除事件侦听器时被触发。
我有一个 AnimationMixer,我想在动画结束时附加一些逻辑。
正如文档所指示的那样——我在混音器上使用了 addEventListener,它工作正常,
但是当我试图删除监听器时它不起作用。
(我也尝试查看 hasEventListener 是否有效,但没有成功。)
简而言之-
addEventListener 的日志正在运行
但是 removeEventListener 和 hasEventListener 没有。
我错过了什么?我找不到任何解释。
非常感谢任何帮助...
this.animationMixer = new THREE.AnimationMixer(gltf.scene);
this.animationMixer.hasEventListener('finished', (e) => {
console.log('hasEvent', e); // doesn't print
});
this.animationMixer.addEventListener('finished', (e) => {
console.log('done'); // prints
this.animationMixer.removeEventListener('finished', (e) => {
console.log('removed'); // doesn't print
});
});
RemoveEventListener() accepts a second argument 知道要删除哪个事件,但删除时不会触发该功能。另外,每次应该是相同的功能,而不是新的:
function hasFinished() {
console.log(“Finished”);
}
let value = this.animationMixer.hasEventListener('finished', hasFinished);
console.log(value); // false
// Add event listener
this.animationMixer.addEventListener('finished', hasFinished);
value = this.animationMixer.hasEventListener('finished', hasFinished);
console.log(value); // true
// Remove listener
this.animationMixer.removeEventListener('finished', hasFinished);
现在该函数将在“完成”事件自行发生时触发。它不会在添加或删除事件侦听器时被触发。