Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Three.js-未捕获类型错误:未定义不是函数_Javascript_Three.js_Webgl - Fatal编程技术网

Javascript Three.js-未捕获类型错误:未定义不是函数

Javascript Three.js-未捕获类型错误:未定义不是函数,javascript,three.js,webgl,Javascript,Three.js,Webgl,我得到了未捕获类型错误:在使用Three.js时,undefined不是一个函数。 我正在创建一个THREE.PerspectiveCamera的行中显示错误。 剧本是 window.requestAnimFrame = (function(callback){ return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequest

我得到了
未捕获类型错误:在使用Three.js时,undefined不是一个函数。
我正在创建一个
THREE.PerspectiveCamera
的行中显示错误。 剧本是

window.requestAnimFrame = (function(callback){
        return window.requestAnimationFrame ||
        window.webkitRequestAnimationFrame ||
        window.mozRequestAnimationFrame ||
        window.oRequestAnimationFrame ||
        window.msRequestAnimationFrame ||
        function(callback){
            window.setTimeout(callback, 1000 / 60);
        };
    })();

    function animate(lastTime, angularSpeed, three){
        // update
        var date = new Date();
        var time = date.getTime();
        lastTime = time;

        // render
        three.renderer.render(three.scene, three.camera);

        // request new frame
        requestAnimFrame(function(){
            animate(lastTime, angularSpeed, three);
        });
    }

    $(window).bind('load',function(){
        var angularSpeed = 0.2; // revolutions per second
        var lastTime = 0;
        $container = $("#container");
        var renderer = new THREE.WebGLRenderer();
        renderer.setSize(window.innerWidth, window.innerHeight);
        $container.append(renderer.domElement);

        // camera - Uncaught Type Error on the below line
        var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 1000);
        camera.position.y = -450;
        camera.position.z = 400;
        camera.rotation.x = 45 * (Math.PI / 180);

        // scene
        var scene = new THREE.Scene();

        var material = new THREE.LineBasicMaterial({
                            color: 0x0000ff,
                        });
        var geometry = new THREE.Geometry();
        for(var i=0;i<100;i++){
            geometry.vertices.push(new THREE.Vector3(i-100,i-100,i-100));
            geometry.vertices.push(new THREE.Vector3(i+100,i+100,i+100));
            var line = new Three.Line(geometry,material);
            scene.add(line);
            geometry=new THREE.Geometry();
        }


        // create wrapper object that contains three.js objects
        var three = {
            renderer: renderer,
            camera: camera,
            scene: scene,
        };

        animate(lastTime, angularSpeed, three);
    });
window.requestAnimFrame=(函数(回调){
return window.requestAnimationFrame||
window.webkitRequestAnimationFrame||
window.mozRequestAnimationFrame||
window.oRequestAnimationFrame||
window.msRequestAnimationFrame||
函数(回调){
设置超时(回调,1000/60);
};
})();
函数动画(上次,角度速度,三){
//更新
变量日期=新日期();
var time=date.getTime();
lastTime=时间;
//渲染
渲染器渲染(3.scene,3.camera);
//请求新帧
requestAnimFrame(函数(){
制作动画(上次,角度速度,三);
});
}
$(窗口).bind('load',function(){
var angularSpeed=0.2;//每秒转数
var lastTime=0;
$container=$(“#container”);
var renderer=new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth、window.innerHeight);
$container.append(renderer.domeElement);
//摄像头-下一行出现未捕获类型错误
var摄像机=新的三透视摄像机(45,window.innerWidth/window.innerHeight,11000);
摄像机位置y=-450;
摄像机位置z=400;
camera.rotation.x=45*(Math.PI/180);
//场面
var scene=new THREE.scene();
var材料=新的三线基本材料({
颜色:0x0000ff,
});
var geometry=new THREE.geometry();

对于(var i=0;i本地副本的问题是您使用了未构建的Three.js文件(即src/Three.js)。您想要的文件是build/Three.js或build/Three.min.js。我将其复制到我的项目中,并在脚本标记的src属性中更改了对它的引用,所有这些文件都开始工作

简言之:

mrdoob-three.js-2524525(or some other number here)
 |
 +----build
 |     |
 |     +--three.js     <-- YES, CORRECT FILE
 |     +--three.min.js <-- YES
 |     ...
 |
 +----src
 ...   |
       +--Three.js     <-- NO, PREBUILT FILE THAT ONLY CONTAINS CONSTANTS
       ...
mrdoob three.js-2524525(或此处的其他数字)
|
+----建造
|     |

|+--three.js嗨,你能试着键入这个
新的three.PerspectiveCamera(45,window.innerWidth/window.innerHeight,1,1000);
直接到控制台并用输出更新你的帖子吗?@LimH。它会给出同样的错误,“UncaughtTypeError:undefined不是函数”。是因为浏览器不支持透视摄影机吗?我一直在Chromium中尝试启用“覆盖软件渲染”选项,然后在firefox中尝试该脚本,结果显示--“TypeError:THREE.PerspectiveCamera不是构造函数”.查看关于您是否支持WebGl的条件语句。您从何处导入three.js库?@Four_lo我使用的是一个本地副本,我从一个示例中获得该副本。我尝试了另一个链接,该链接似乎可以解决相机的问题,但在three.js文件中产生了相同的错误,“未捕获的TypeError:无法读取未定义的属性“x”