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

时间:2017-01-03 19:55:15

标签: javascript three.js

我的节目有多个场景。当然只有1个场景可见,所以如何停止除当前场景之外的所有其他场景的动画以提高性能?有10个场景,每个场景中有很多物体会影响性能。

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

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

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;
    }   
}

除了currentScene之外,我已经将所有场景编程为默认隐藏。但我发现在我的案例中没有帮助研究如何使用cancelAnimationFrame()。另外,一个后续问题:只有在页面加载了包含所有对象的所有场景后才会激活cancelAnimationFrame()吗?或者它也有助于加载时间?

我的FIDDLE包含上述及相关代码。

1 个答案:

答案 0 :(得分:2)

动画是数字参数随时间的变化。在您的示例中,这意味着更改spinningRig方法中的animate()旋转角度。只要您更改当前场景的旋转 - 您实际执行的操作 - 其他场景就不会被动画化。

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

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