Three.js可点击的对象不可点击

时间:2016-02-18 19:37:02

标签: javascript three.js

我试图通过使用名为objects []的数组将3D对象转换为可点击元素;和一个switch语句,用于访问对象的userData。现在,脚本运行时没有错误,但对象仍然无法点击。我错过了什么?

  var container, stats;
        var camera, scene, raycaster, renderer;

        var mouse = new THREE.Vector2(),
            INTERSECTED;
        var radius = 100,
            theta = 0;

        init();
        animate();





        function createMesh(name, geometry, material) {

            var object = new THREE.Mesh(geometry, material);
            object.position.x = Math.random() * 800 - 400;
            object.position.y = Math.random() * 800 - 400;
            object.position.z = Math.random() * 800 - 400;

            object.scale.x = Math.random() * 2 + 1;
            object.scale.y = Math.random() * 2 + 1;
            object.scale.z = Math.random() * 2 + 1;

            object.rotation.x = Math.random() * 2 * Math.PI;
            object.rotation.y = Math.random() * 2 * Math.PI;
            object.rotation.z = Math.random() * 2 * Math.PI;

            object.userData = {
                URL: "http://www.google.com"
            };
            var objects = [];

            for (i = 0; i > objects.length; i++) {
                objects += i;
                objects.push(object);
            }
            scene.add(object);



            switch (i) {
                case 1:
                    objects[i].userData = {
                        URL: "http://www.google.com"
                    };
                    break;
                case 2:
                    objects[i].userData = {
                        URL: "https://www.yahoo.com"
                    };
                    break;
            }


            object.name = name;
        }

1 个答案:

答案 0 :(得分:0)

        var objects = [];

        // objects.length == 0
        // i is not greater than so nothing happens
        for (i = 0; i > objects.length; i++) {
            objects += i;
            objects.push(object);
        }
        scene.add(object);


        // i is still equal to 0 so nothing happens once again
        switch (i) {
            case 1: ...
            case 2: ...