【发布时间】:2019-10-07 13:59:21
【问题描述】:
我有一个 gltf 模型,它有一个动画,我可以让用户通过单击播放按钮来开始/停止。虽然我能够在用户点击停止时停止播放动画,但我无法将模型重置为其原始位置和旋转。
这是我的代码
<a-entity gltf-model="#character" texture-map="map: map" position="0 0 -7"></a-entity>
这是组件纹理映射中的代码部分,它试图将模型重置回其原始位置 0, 0 -7
play.addEventListener("click", (e)=> {
if (play.innerHTML === "Stop"){
play.innerHTML = "Play";
this.el.pause();
this.el.removeAttribute("animation-mixer");
let position = new THREE.Vector3(0, 0, -7);
this.el.object3D.position.copy(position);
this.el.object3D.matrixWorldNeedsUpdate = true;
this.el.object3D.updateMatrixWorld(); */
this.el.object3D.lookAt(-3, 0, 0);
}
else{
play.innerHTML="Stop";
this.el.setAttribute("animation-mixer", "clip", "catwalk");
this.el.play();
}
})
当我执行此代码并点击停止按钮时,动画停止但模型的位置和旋转不会被重置。谁能帮我解决这个问题?
【问题讨论】:
-
我想了解
this.el.pause()的作用。this.el是什么对象?也许动画关键帧移动了对象,暂停它不足以重置它。您可能需要完全删除动画。 -
this.el 指的是组件(纹理贴图)附加到的实体。我实际上是在 this.el.pause() 之后删除动画。 this.el.pause() 用于停止动态行为。我后来实际上从代码中删除了 this.el.pause() ,它没有任何效果。