【问题标题】:How can I destroy THREEJS Scene?如何销毁 THREEJS 场景?
【发布时间】:2014-02-22 13:38:04
【问题描述】:

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

问题很简单:如何破坏场景?从场景中移除所有组件?

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

【问题讨论】:

  • 垃圾收集器有什么问题?创建一个新场景并且不留下指向旧场景的变量应该足以将其销毁。无论如何,下面的解决方案都会做同样的事情。是我遗漏了什么,还是这种“破坏”实际上毫无意义?

标签: javascript garbage-collection three.js


【解决方案1】:

我用过这个:

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

【讨论】:

  • 在我的项目中清理并重新启动场景非常好。如果您发现更有效的方法,请将其发布在您的 rolution 上;)
  • 顶!!我要离开“cancelAnimationFrame”,我不知道!
  • 这是什么? Scene 的 Canvas 父级?
  • 在我的例子中,所有代码都在原型下,这是原型的实例,这不相关,在你的情况下可能你不能忽略它。
  • 嗨 Marco,“this”,因为在我的上下文中,所有内容都包装在原型中,用于访问投影仪和 modelContainer,如果使用全局变量,可以忽略它。投影仪是threejs的一个特定对象,你可以找到很多关于它的文档,modelContainer是我的threejs场景的根节点元素。
猜你喜欢
  • 1970-01-01
  • 2017-10-21
  • 2019-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 2014-04-29
  • 1970-01-01
相关资源
最近更新 更多