我正在创建一个在线实时游戏。我所有的播放器及其动画混合器都存储在数组中。一切正常,直到玩家离开游戏为止。当他们离开时,我尝试从播放器阵列中进行拼接,但是每次这样做,程序都会冻结。
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);
当我尝试拼接这些数组时出了什么问题?
答案 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);
}