Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Three.js动画onClick将永远持续下去_Javascript_Three.js - Fatal编程技术网

Javascript Three.js动画onClick将永远持续下去

Javascript Three.js动画onClick将永远持续下去,javascript,three.js,Javascript,Three.js,目标 我正在尝试制作一个简单的相机放大动画,每次点击按钮时,它都会将相机放大X倍 当前进度 我现在已经在Three.js中对动画进行了编码,并且按钮运行脚本 function cameraZoomIn() { console.log("Camera Zoom In Function Clicked"); camera.position.z -= 50; requestAnimationFrame( cameraZoomIn ); render();

目标

我正在尝试制作一个简单的相机放大动画,每次点击按钮时,它都会将相机放大X倍

当前进度

我现在已经在Three.js中对动画进行了编码,并且按钮运行脚本

function cameraZoomIn() {
      console.log("Camera Zoom In Function Clicked");
      camera.position.z -= 50;
      requestAnimationFrame( cameraZoomIn );
      render();
};

<input type="button" onclick="cameraZoomIn();" value="Zoom Camera In!" />
函数cameraZoomIn(){ console.log(“单击相机放大功能”); 摄像机位置z-=50; 请求动画帧(cameraZoomIn); render(); }; 问题

动画会一直运行,但会一直运行,正如单击“放大摄影机”按钮时在此处看到的那样-

更新1


如果我删除
requestAnimationFrame
,它只会运行一次,但会跳转到不在中间的位置。那么,为什么这会使动画自身重复呢

简单地说:你没有检查它是否应该停止

基本上你有一个循环,比如:

while(true) {
   cameraZoomIn();
}
页面处于视图中时,始终会调用并执行requestAnimationFrame()

你需要建立一个支票

var intialz = camera.position.z;
var zoomfactor = 50;
function cameraZoomIn() {
  console.log("Camera Zoom In Function Clicked");
  camera.position.z -= zoomfactor;
  if(camera.position.z > (intialz - (zoomfactor * 10))) {// stop zooming at 10x zoom
      requestAnimationFrame( cameraZoomIn );
  }
  render();
};

如果它对你有帮助,你可以考虑接受和接受它。当然,我喜欢先测试它,然后再给我一个第二个修改我的例子,因为我意识到我假设初始相机Z是0。将其修改为从初始z值开始。可能会在你的应用程序中添加一个重置z的功能,或者通过反复按下按钮来允许增量缩放。谢谢,这么简单的修复!!你知道旋转一个物体的最好方法吗?如果你在那里找不到任何东西