22 - three.js 笔记 - three.js加载资源的异步操作

js中的回调函数一般都是异步操作的,同样three.js中像加载模型数据,和一些其它的资源文件的加载也是通过回调函数的方式来获取的,所以它们也是异步的。在此之前,我还不知道怎么把那些回调函数改成同步操作。
因为,做的一个项目要加载json字体文件,所以需要在外部使用字体的配置,并且只加载一次字体文件,而不是调用一次就加载一次,所以,就遇到了这个回调函数异步操作的问题。
例如我们使用FontLoader来加载json字体文件

var loader = new THREE.FontLoader();
var fontCfg = null;
var font = loader.load(
    // resource URL
    'fonts/helvetiker_bold.typeface.json'

    // onLoad callback
    function ( font ) {
        // do something with the font
        scene.add( font );
    }
);

如果此时我们想要获取,回调函数中的font,那么就需要在外部,声明一个函数,在回调函数内部调用,才能够将font数据获取到外部使用。

var loader = new THREE.FontLoader();
var fontCfg = null;
var font = loader.load(
    // resource URL
    'fonts/helvetiker_bold.typeface.json'

    // onLoad callback
    function ( font ) {
        // do something with the font
        scene.add( font );
        getFontCfg(font);
    }
);

// 因为load是异步的,所以要等加载完才能获取 获取文字配置信息
 function getFontCfg(font) {

     fontCfg = font;

 }

这样就可以在外部使用font文字配置信息了。
还有当我们加载一个模型的时候等等..都可以这样来获取内部的数据,如今还没有想到更好的办法。

猜你喜欢

转载自blog.csdn.net/ithanmang/article/details/81279853