我从数组拼接3dObject后THREE.js冻结

时间:2019-04-22 18:30:03

标签: javascript arrays three.js

我正在创建一个在线实时游戏。我所有的播放器及其动画混合器都存储在数组中。一切正常,直到玩家离开游戏为止。当他们离开时,我尝试从播放器阵列中进行拼接,但是每次这样做,程序都会冻结。

var indexer = i;
scene.remove(players[indexer]);
players[indexer].geometry.dispose();
players[indexer].material.dispose();
players.splice(indexer, 1);
interval.splice(indexer, 1);
mixers.splice(indexer, 1);
anim.splice(indexer, 1);
ids.splice(indexer, 1);

当我尝试拼接这些数组时出了什么问题?

1 个答案:

答案 0 :(得分:0)

最终,您无法使用three.js从for循环中间的数组中拼接3dObject。因此,我创建了一个函数,并用window.setTimeout()调用了该函数。现在一切正常。

window.setTimeout(RemovePlayer, 10, i);

function RemovePlayer(indexer){
    scene.remove(players[indexer]);
    players[indexer].geometry.dispose();
    players[indexer].geometry = null;
    players[indexer].material.dispose();
    players[indexer].material = null;
    players[indexer].dispose();
    players[indexer] = null;
    players.splice(indexer, 1);
    interval.splice(indexer, 1);
    mixers.splice(indexer, 1);
    anim.splice(indexer, 1);
    ids.splice(indexer, 1);
}