Javascript 如何停止多个场景(当前场景除外)的动画?

Javascript 如何停止多个场景(当前场景除外)的动画?,javascript,three.js,Javascript,Three.js,我的程序有多个场景。当然,只有一个场景始终可见,因此如何停止除当前场景之外的所有其他场景的动画以提高性能?共有10个场景,每个场景都有大量的对象,这会影响演出 我知道可以用cancelAnimationFrame()来完成,但是如何实现呢?据推测,这是提高性能的最佳实践吗 这10个场景是一组场景。当前场景是传递给场景[]数组的用户输入数值 function changeScene() { // Set the currentScene to the user selection

我的程序有多个场景。当然,只有一个场景始终可见,因此如何停止除当前场景之外的所有其他场景的动画以提高性能?共有10个场景,每个场景都有大量的对象,这会影响演出

我知道可以用
cancelAnimationFrame()
来完成,但是如何实现呢?据推测,这是提高性能的最佳实践吗

这10个场景是一组场景。当前场景是传递给
场景[]
数组的用户输入数值

function changeScene() {
    // Set the currentScene to the user selection
        var sceneNumber = list.options[list.selectedIndex].value;
        currentScene = scenes[sceneNumber-1];
    // Hide all scenes by default    
        for(var j=0;j<10;j++){
        scenes[j].visible = false;
    }   
}
函数changeSecene(){
//将当前场景设置为用户选择
var sceneumber=list.options[list.selectedIndex].value;
currentScene=场景[Sceneumber-1];
//默认情况下隐藏所有场景

对于(var j=0;j动画是数值参数随时间的变化。在您的示例中,这意味着在
animate()
方法中更改
spinningRig
旋转角度。只要您仅更改当前场景的旋转(实际更改),其他场景就不会被设置动画

如果您可能正在处理渲染而不是动画,那么也无需担心,因为Three.JS只渲染您在
renderer.render()
中指定的一个场景


或者您正在解决其他问题吗?动画显然不是问题。

动画是随着时间的推移数值参数的变化。在您的示例中,这意味着更改
动画()中的
旋转角度
method。只要您仅更改当前场景的旋转(实际上是这样做的),其他场景就不会被设置动画

如果您可能正在处理渲染而不是动画,那么也无需担心,因为Three.JS只渲染您在
renderer.render()
中指定的一个场景


或者你在解决其他问题吗?动画在这里显然不是问题。

根据你的JSFIDLE示例,你已经处理了一个也是唯一一个设置为当前的场景。其他场景没有动画或渲染。好吧,我很困惑。那么,当很多场景中有很多对象时,以及
currentScene
在我的实际程序中对象相对较少,如果所有其他场景都设置为
visible=false
并且这些场景的动画停止,则加载页面需要一段时间。还有什么原因和/或加载时间的固定方法?根据JSFIDLE示例,您已经使用了一个d只有您设置为当前的场景。其他场景没有动画或渲染。好吧,我很困惑。那么,当很多场景中有很多对象,并且
currentsecene
在我的实际程序中对象相对较少时,如果所有其他场景都设置为
visible=false
这些场景的动画被停止?还有什么原因和/或修正加载时间?在我的真实程序中,我添加到场景中的对象来自一个数组,每个对象都有纹理。如果我将大量对象(如1000个对象)推到场景中,则页面的加载时间会缩短比10个对象长很多。但是,当所有场景中的对象默认设置为不可见时,怎么会这样呢,除了
当前场景
。我还错误地认为这些场景的动画仍在运行。但是如果不是可见性和动画,还有什么问题呢?所以我加载是个问题。Three.js中的加载程序没有考虑哪些场景可见,哪些不可见。这有很多很好的原因(预加载、跨场景共享模型等)我担心你必须自己处理这个问题,例如,首先从可见场景加载模型,然后才开始加载其他模型。在我的实际程序中,我添加到场景中的对象来自一个数组,每个对象都有纹理。如果我将大量对象(如1000个)推送到场景中,则页面比10个对象长得多。当所有场景中的对象都默认设置为不可见时(除了
currentScene
),怎么会这样呢?我还错误地认为这些场景的动画还在运行。但是如果不是可见性和动画,还有什么可能是pr问题?所以加载是个问题。Three.js中的加载程序没有考虑哪些场景可见,哪些不可见。这有很多很好的原因(预加载、跨场景共享模型等)恐怕您必须自己管理,例如,首先从可见场景加载模型,然后才开始加载其他模型。。