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