Javascript player.position.x不是defined而是object move,为什么会出现错误?

Javascript player.position.x不是defined而是object move,为什么会出现错误?,javascript,three.js,Javascript,Three.js,尝试更新对象时出错。但是为什么呢?对象是否声明为玩家变量? 如何解决我可以从任何地方访问对象的问题 未捕获的TypeError:无法读取未定义的属性“position”您没有在任何地方调用buildobj,因此该变量未定义为您期望的对象,我如何修复它?我是否必须将该变量放入函数中然后返回它?从技术上讲,由于您已将其定义为全局变量,您可以像现在这样更改它,但似乎您并没有运行该函数(即buildobj)?还有,什么是init()?这个定义在哪里?在任何情况下,您都需要确保首先加载数据,然后才启动任何

尝试更新对象时出错。但是为什么呢?对象是否声明为玩家变量? 如何解决我可以从任何地方访问对象的问题


未捕获的TypeError:无法读取未定义的属性“position”

您没有在任何地方调用buildobj,因此该变量未定义为您期望的对象,我如何修复它?我是否必须将该变量放入函数中然后返回它?从技术上讲,由于您已将其定义为全局变量,您可以像现在这样更改它,但似乎您并没有运行该函数(即buildobj)?还有,什么是init()?这个定义在哪里?在任何情况下,您都需要确保首先加载数据,然后才启动任何循环。否则你会得到这个错误。所以我猜你会希望“callbackOnLoad”调用一个启动循环的函数。很可能是因为
update
在加载对象之前被调用。只需将该代码包装在一个
if
语句中,如下所示:
if(player){player.position.x+=1;}
这样它只在定义了播放器对象的情况下访问该对象。您没有在任何地方调用buildobj,因此该变量没有定义为您期望的对象,我如何修复它?我是否必须将该变量放入函数中,然后返回它?从技术上讲,由于您已将其定义为全局变量,您可以像现在这样更改它,但似乎您并没有运行该函数(即buildobj)?还有,什么是init()?这个定义在哪里?在任何情况下,您都需要确保首先加载数据,然后才启动任何循环。否则你会得到这个错误。所以我猜你会希望“callbackOnLoad”调用一个启动循环的函数。很可能是因为
update
在加载对象之前被调用。只需将该代码包装在一个
if
语句中,就像这样:
if(player){player.position.x+=1;}
这样它就只访问定义了的player对象
var player;
//baut die objecte
buildobj = function () {
    // instantiate the loader
    loader = new OBJLoader2();

    // function called on successful load
    function callbackOnLoad(playership) {
        player = playership;
        playership.position.set(-7300, -7500, -1);
        playership.rotation.set(Math.PI / 2, Math.PI / -2, 0);
        scene.add(playership);
    }
    // load a resource from provided URL synchronously
    loader.load('AmerWarship.obj', callbackOnLoad, null, null, null);
}

//gameprocess
update = function () {
    player.position.x += 1;//error here
};
render = function () {
    //player.position.x += 1;
    renderer.clear();
    renderer.render(scene, camera);
};
GameLoop = function () {
    setTimeout(function () {

        requestAnimationFrame(GameLoop);

    }, 1000 / 60);
    render();
    update();
    steuerung_tastatur_camera();

};
init(); //load init first!!