Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 我怎样才能破坏这个场景?_Javascript_Garbage Collection_Three.js - Fatal编程技术网

Javascript 我怎样才能破坏这个场景?

Javascript 我怎样才能破坏这个场景?,javascript,garbage-collection,three.js,Javascript,Garbage Collection,Three.js,我创建了一个Threejs场景,添加了相机、灯光和各种对象 问题很简单:我怎样才能破坏这个场景?是否从场景中删除所有组件 我需要销毁场景,因为我不想将任务委托给垃圾收集器。我使用了以下方法: cancelAnimationFrame(this.id);// Stop the animation this.renderer.domElement.addEventListener('dblclick', null, false); //remove listener to rende

我创建了一个Threejs场景,添加了相机、灯光和各种对象

问题很简单:我怎样才能破坏这个场景?是否从场景中删除所有组件

我需要销毁场景,因为我不想将任务委托给垃圾收集器。

我使用了以下方法:

    cancelAnimationFrame(this.id);// Stop the animation
    this.renderer.domElement.addEventListener('dblclick', null, false); //remove listener to render
    this.scene = null;
    this.projector = null;
    this.camera = null;
    this.controls = null;
    empty(this.modelContainer);
empty方法是jQuery empty的替代方法,您可以使用它:

function empty(elem) {
    while (elem.lastChild) elem.removeChild(elem.lastChild);
}

在我的项目工作非常好,以清理和重新启动现场。如果你发现有更有效的方法,请把它贴在你的简历上;)顶部我正要离开“取消动画框架”,我不知道!这是什么?画布场景的父级?在我的例子中,所有代码都在prorotype下,这是原型的实例,这不相关,在你的例子中,你可能不能忽略它。嗨,Marco,“这”是因为在我的上下文中,所有东西都包装在原型中,这用于访问投影仪和模型容器,如果使用全局变量,则可以忽略它。投影仪是threejs的一个特定对象,你可以找到很多关于它的文档,modelContainer是我的threejs场景的根节点元素。垃圾收集器怎么了?创建一个新场景,并且不在旧场景上留下任何变量,应该足以将其销毁。不管怎样,下面的解决方案也会做同样的事情。我是错过了什么,还是这种“破坏”实际上毫无意义?