【发布时间】:2016-10-24 06:03:41
【问题描述】:
我创建了一个三个 js 对象并添加了一些子对象。然后我将孩子的长度更改为 0。然后对象已经离开屏幕。这会使对象完全从屏幕和内存中删除吗?
var balls = new THREE.Object3D(); // parent
用于创建儿童
var geometry = new THREE.SphereGeometry(5, 32, 32);
var material = new THREE.MeshPhongMaterial({color: 0x0f0ff0, shininess: 50, transparent: true, opacity: 1});
var sphere = new THREE.Mesh(geometry, material);
sphere.position.x = scale('some random value');
sphere.position.y = scale('some random value');
balls.add(sphere);
对更多球体重复上述步骤
然后在控制台中我写了
balls.children = [];
这会从场景中移除所有球体。这是否也会从内存中删除所有球体对象??
【问题讨论】:
-
stackoverflow.com/a/8467563/3264799 你做得“正确”,因为你希望它被垃圾收集。但是,Three.js 方式是通过
scene.remove( child )方法从场景中删除每个元素。按照 Three.js 想要的方式进行操作是一个很好的做法,因为它无论如何都负责创建和控制元素。有时,如果库中有一些包含有关内容信息的私有变量,它们可能会感到困惑,但随后这些内容会被突然删除,从而破坏系统。
标签: javascript three.js