我用three.js编写了一个应用程序,当鼠标点击它们时,我想检测某些圈子。 问题是,只有当我打开(然后关闭或不关闭,并不重要)Chrome开发人员工具时,它才能正常工作!如果我没有检测到非常困难地点击圈子(一次是5次)!
我读了这个Why does JavaScript only work after opening developer tools in IE once?
我删除了控制台电话(即使我不在IE上运行它)。虽然,在我下载的three.js文件中有很多控制台电话,但我不认为这是问题所在。
我该怎么办?!
代码圈子的代码:
for (var i = 0; i <6; i++) {
for (var j = 0; j < 16; j++) {
var crcl = {};
crcl.obj = new THREE.Mesh( new THREE.CircleGeometry( 1.7, 30, 0, Math.PI * 2 ), mat);
crcl.obj.position.set(j*4.5+7, 277-i*3, 250);
crcl.obj.scale.set(1,1,1);
scene.add(crcl.obj);
SlotsToDetect.push(crcl.obj); // array to help detect click
PlayingSlotMatrix[i][j]=crcl; // array that hold circles for future handling
}
}
找到圈子的代码:
var intersectsSLOTS = raycaster.intersectObjects(SlotsToDetect, true);
if(intersectsSLOTS.length>0 ){
clickedObject=intersectsSLOTS[0].object;
updateSlots(clickedObject.id);
}
编辑:我想补充一点,有时我会收到错误&#34;无法读取属性&#39; getDescendants&#39;未定义&#34;对于delta intersectDescendants = function(object,raycaster,intersects){..}函数在Three.js文件中。
编辑2:Chrome根本不显示警告()。虽然,它显示了控制台调用。这是什么意思?