作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我在 Javascript 中调用这个函数,它会工作,并将对象添加到场景中:
var loader = new THREE.FBXLoader();
function returnFBX(PATH, scene) {
loader.load('obj/' + PATH + '.fbx', function (object) {
scene.add(object);
});
}
但是,如果我替换:
scene.add(object);
与:
return object;
似乎返回undefined。
我尝试使用 Promises 以及加载管理器,但两者似乎都只能将对象添加到场景中,而不能返回对象。
我认为这是因为两个函数相互嵌套,而且加载是异步的。但我不确定如何解决这个问题,因为这是加载对象的标准方式。
最佳答案
load
是异步的 - 使用回调或使用 await,即
const afterload = object => { console.log(object); }
function returnFBX(PATH, scene) {
loader.load('obj/' + PATH + '.fbx', function (object) {
afterload(object);
});
}
或
async function returnFBX(PATH, scene) {
return loader.load('obj/' + PATH + '.fbx', function (object) {
return object;
});
}
let afterloadObject = await returnFBX( ... )
关于javascript - 如何在 Three.js 中返回对象而不是将其添加到场景中? (FBX加载程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53823695/
我是一名优秀的程序员,十分优秀!