javascript - Three.js - 访问场景中的子对象

标签 javascript object three.js blender

我正在尝试访问场景中的子对象sole。我可以使用 obj 访问加载程序函数内的 var sole,但我需要从加载程序函数外部访问它。

Here's the working codehere's the json model file .

我可以从加载程序内部访问它,如下所示:

var loader = new THREE.ObjectLoader();  
loader.load("models/shoe4.json", function (obj) {
    scene.add (obj);
    scene.rotation.y = Math.PI/1;
    scene.position.y = -5;
    scene.position.z = -24;

    var sole = obj.getObjectByName( "sole", true );
    sole.position.y = -5;

});

但是我需要做这样的事情:

var loader = new THREE.ObjectLoader();  
loader.load("models/shoe4.json", function (obj) {
    scene.add (obj);
    scene.rotation.y = Math.PI/1;
    scene.position.y = -5;
    scene.position.z = -24;     
});

var sole = obj.getObjectByName( "sole", true );
sole.position.y = -5;

基本上我需要把它放在它自己的函数中以备后用。

我也试过

var sole = scene.getObjectByName( "sole", true );
sole.position.y = -5;

这给了我错误:

Uncaught TypeError: Cannot read property 'getObjectByName' of undefined

如何从任何地方访问对象sole?简单地声明 var obj, 是行不通的。

最佳答案

首先,在 lambda 函数的范围之外声明 sole,如下所示:

var sole = null;
var loader = new THREE.ObjectLoader();  
loader.load("models/shoe4.json", function (obj) {
    scene.add (obj);
    scene.rotation.y = Math.PI/1;
    scene.position.y = -5;
    scene.position.z = -24;

    sole = obj.getObjectByName( "sole", true );
    sole.position.y = -5;

});

// this will FAIL because sole is undefined when this line of code executes
sole.position.x = 5;

其次,在实际执行 lambda 函数之前,程序不得访问 sole之后。如果您不熟悉异步(或事件驱动)编程模型,那么您应该阅读一下它:

http://code.tutsplus.com/tutorials/event-based-programming-what-async-has-over-sync--net-30027

https://msdn.microsoft.com/en-us/library/windows/apps/Hh700330.aspx

关于javascript - Three.js - 访问场景中的子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31900485/

相关文章:

javascript - 为什么覆盖 native 方法是个坏主意?

javascript - 为什么Object.keys()方法没有添加到Object.prototype中?

javascript - 使用 javascript 将数组缩减为特定结构

javascript - 如何在特定的 div 中显示 Canvas 场景?

javascript 如何解析数组的值以求和

javascript - 删除 TinyMCE 文本

javascript - Knockback.js 主干集合仅将第一个元素添加到 UI

javascript - 如何验证两个对象数组

javascript - Three.js - 查找相机的当前 LookAt?

javascript - Three.js绘制简单三 Angular 形