我已将Blender JSON动画导出为THREE.js格式,一切运行正常,但我想仅播放动画一次并停止,而不是循环播放动画。
虽然这是一个旧问题,但是如果有人需要解决这个问题,解决方法是设置animation.setLoop(THREE.LoopOnce)
let objLoader = new THREE.ObjectLoader();
objLoader.load('./your.json', function(obj)
{
scene.add(obj);
let animationMixer = new THREE.AnimationMixer(obj);
let animation = animationMixer.clipAction(obj.animations[0]);
animation.setLoop(THREE.LoopOnce);
animation.clampWhenFinished = true;
animation.enable = true;
animation.play();
})
我指的是ThreeJS r84
版本。
play
后需要进行一次“重置”,因此使用animation.play().reset();
。 - Abraham Brookesplay
再调用reset
能正常工作,但更规范和安全的做法是先进行reset
调用,像这样:animation.reset().play()
。(文档也建议这样 https://threejs.org/docs/#api/en/animation/AnimationAction.play)。 - jox