Jos*_*osé 7 javascript 3d three.js
我正在使用Three.JS制作一架飞机并在其上放置一些箱子我有时需要拆除所有箱子.所以我试着用以下代码来做:
for ( i = 0; i < scene.children.length; i ++ ) {
var object = scene.children[ i ];
if ( object != plane && object != camera) {
scene.remove(object);
}
}
Run Code Online (Sandbox Code Playgroud)
/ 这会杀死不是飞机或相机的每个物体;-) /
它删除了一些盒子,但不是全部= =(我怎么能删除所有盒子?问候,José
小智 21
在删除这样的数组对象时,您需要返回前端,而不是前后.
var obj, i;
for ( i = scene.children.length - 1; i >= 0 ; i -- ) {
obj = scene.children[ i ];
if ( obj !== plane && obj !== camera) {
scene.remove(obj);
}
}
Run Code Online (Sandbox Code Playgroud)
发生的事情是当一个节点移除一个节点,所有节点移位后.假设您删除了scene.children [0]:children [1]将成为新的0,2将变为1等.当从0到array.length时,for循环已经移动并且正在跳过1个节点你删除的每一个.
作为额外的加分,这应该稍快一些,特别是如果你有很多对象,因为scene.children.length只获得一次,而不是每个循环.
归档时间: |
|
查看次数: |
11111 次 |
最近记录: |