Javascript 使用Babylon.JS停止/重新启动循环内的动画

Javascript 使用Babylon.JS停止/重新启动循环内的动画,javascript,babylonjs,babel-babylon,Javascript,Babylonjs,Babel Babylon,我用三个动画设置这个循环,第一个在初始屏幕加载时运行(firstAnimation)。接下来的两个动画使用回调在它们之间循环(slideAnimation->rotateAnimation->slideAnimation…) 如何停止正在使用POINTERDOWN的动画,并在PONTERUP上恢复动画 我在下面所做的方法只在第一个动画中起作用,只要它在循环中,它显然不再针对这两个动画。那么,如何使用一个.pause().resume()命令针对所有三个动画 var slideAnimatio

我用三个动画设置这个循环,第一个在初始屏幕加载时运行(firstAnimation)。接下来的两个动画使用回调在它们之间循环(slideAnimation->rotateAnimation->slideAnimation…)

如何停止正在使用
POINTERDOWN
的动画,并在
PONTERUP
上恢复动画

我在下面所做的方法只在第一个动画中起作用,只要它在循环中,它显然不再针对这两个动画。那么,如何使用一个
.pause().resume()
命令针对所有三个动画

  var slideAnimation = function(){
      scene.beginDirectAnimation(box, [xSlide], 0, 2 * frameRate, false, 2, rotateAnimation);
  }

  var rotateAnimation = function(){
      scene.beginDirectAnimation(box, [yRot], 0, 2 * frameRate, false, 2, slideAnimation);
  }

  var firsAnimation = scene.beginDirectAnimation(box, [xSlide], 0, 2 * frameRate, false, 2, slideAnimation);

  scene.onPointerObservable.add((pointerInfo) => {
      switch (pointerInfo.type) {
          case BABYLON.PointerEventTypes.POINTERDOWN:
              light2.intensity =0.95;
              firsAnimation.pause();
              box.scaling = new BABYLON.Vector3(4, 1, -1)
              break;
          case BABYLON.PointerEventTypes.POINTERUP:
              light2.intensity =0.15;
              firsAnimation.restart();
              box.scaling = new BABYLON.Vector3(1, 1, 1)
              break;
      }
  });

或者这需要一种不同的方法吗?

巴比伦小组动画可能对您有用-。这是一种对动画和可动画进行分组、规格化并将它们控制在一起的方法

你可以在这里看到一个例子-

如果希望在一个可设置动画(网格)上同时运行两个动画,请将第79行更改为

animationGroup.addTargetedAnimation(animation2,第2框);

animationGroup.addTargetedAnimation(animation2,第1框);
然后按顶部的“运行”按钮

然后按“付款”按钮将在同一网格上运行两个动画