【发布时间】:2020-04-20 11:44:35
【问题描述】:
我使用 three.js 加载了一个 obj 文件 我尝试获取其顶点“X”位置并将其保存在 init() 函数中的 objloader 函数内的“pos”中。 我想在另一个函数中使用变量的值,比如 displayposition() 当我尝试时
var pos;
function init() {
var objLoader = new THREE.OBJLoader();
objLoader.load('objectfile.obj', function(object) {
scene.add(object);
pos = scene.children[5].children[0].geometry.attributes.position.getX(0);
console.log(pos); //This displays the vertex position value
});
}
function displaypos() {
console.log(pos); //It doesn't display the vertex position value
}
如何使其成为全局变量并使 'pos' 的变量值在整个程序中可用..
【问题讨论】:
-
当你将pos分配到回调中时,你不必重新声明。您应该将
var pos = scene...替换为pos = scene...。如果你声明它,回调中的pos将是一个与全局pos完全不同的变量,只是名称相同。 -
我删除了 var re-declaration 仍然没有显示值..
-
您是否检查过回调是否在
displaypos方法之前被调用? -
是的,我首先调用了 init();然后继续 displaypos();
-
好的,但您是否确认也调用了回调?您传递给
objLoader.load方法的那个。另外,我建议改进缩进。
标签: javascript variables three.js scope global-variables