简体   繁体   English

Three.js,如何访问场景中的项目? 我应该使用document.getElementById()吗?

[英]Three.js, how to access items inside scene? Should I use document.getElementById()?

for ( var i = 0; i < 100; i ++ ) {

    var particle = new THREE.Particle( new THREE.ParticleCanvasMaterial( { color: 0x666666, program: programStroke } ) );
    particle.position.x = Math.random() * 800 - 400;
    particle.position.y = Math.random() * 800 - 400;
    particle.position.z = Math.random() * 800 - 400;
    particle.scale.x = particle.scale.y = Math.random() * 10 + 10;
    scene.add(particle);
    scene.children[i].id = "q"+i;  // to select item using document.getElementById();
}   

projector = new THREE.Projector();

renderer = new THREE.CanvasRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );

container.appendChild( renderer.domElement );
if(showStats == true){
    stats = new Stats();
    stats.domElement.style.position = 'absolute';
    stats.domElement.style.top = '0px';
    container.appendChild( stats.domElement );
}
document.addEventListener( 'mousemove', onDocumentMouseMove, false );
window.addEventListener( 'resize', onWindowResize, false );
console.log("1 -- "+scene);
console.log("2 -- "+scene.children);
console.log("3 -- "+document.getElementById('q1');

I tried to access the particles inside scene, so I pre-defined ids before adding them into scene. 我试图访问场景中的粒子,所以我在将它们添加到场景之前预先定义了id。 When I printed out scene.children, I could see their ids are like 'q0', 'q1', 'q2'.... However, document.getElementById() does not allow me to access those items.. In this case, how should I do it? 当我打印出scene.children时,我可以看到它们的ID类似于'q0','q1','q2'....但是,document.getElementById()不允许我访问这些项目。在这种情况下,我该怎么办?

Instead of doing: 而不是做:

scene.children[i].id = "q"+i;

do: 做:

particle.name = "q"+i;

and then 接着

scene.traverse (function (object)
{
    if (object instanceof THREE.Particle)
    {
        if (object.name === 'q10')
            // do what you want with it.
    }
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM