欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Cocos Creator加载文本文件

程序员文章站 2024-03-16 16:44:16
...

Cocos Creator 加载文本文件

写在前面

之前用cocos creator加载一些cc.SrpiteFrame的时候,利用cc.loader.loadRes()方法甚是便捷。cc.loader.loadTxt被移除之后,怎么加载文本文件呢?

cc.loader.loadRes

我们知道cc在动态加载文件的时候需要将文件放在resources文件下。其次我们要搞清楚的一点事,如下代码中的res是什么?

cc.loader.loadRes(url, function(err, res){
	if(err){
		cc.error(err.message);
		return;
	}
	...
});

下面代码加载了一个SpriteFrame:

		cc.loader.loadRes("characters/C12", function (err, pic) {
            if (err) {
                cc.error(err.message);
                return;
            }
            console.log(pic);               // 由于是图片,这里pic是cc_Texture2D对象
            console.log(pic.toString());    // res/import/97/976d9e70-d09f-48c2-93e5-85cccfb6c69d.jpg
            console.log(pic.nativeUrl);     // res/import/97/976d9e70-d09f-48c2-93e5-85cccfb6c69d.jpg
            // 可以看到 pic.toString()方法返回nativeUrl的值
        });

下面的代码是加载一个文本文件:

		cc.loader.loadRes("configure/character", function (err, conf) {
            if (err) {
                cc.error(err.message);
                return;
            }
            console.log(conf);               // 由于是文本,这里conf是cc_Asset对象
            console.log(conf.toString());    // res/import/14/1400c110-37ad-489f-9016-0637a4a0709f.conf
            console.log(conf.nativeUrl);     // res/import/14/1400c110-37ad-489f-9016-0637a4a0709f.conf
            // 可以看到 conf.toString()方法返回nativeUrl的值
            // console.log("url: " + conf)   // 这里应该会默认调用 toString 方法

            /**
             * 由此可见 loadRes真正返回的是资源对象
             * 如果是内置的资源类型,那么可以特定对象(如cc.SpriteFrame,cc.Altlas)赋值
             * 而一些文本文件,则需要进一步通过cc.loader.load()函数进行加载
             */
            cc.loader.load(conf.nativeUrl, function(err, text){
                console.log(text);
            });
        });

我们可以看到cc.loader.loadRes函数返回的是一个资源对象,而对于非内置的资源类型,需要进一步加载。这对于文本、图片都是适用的。而cc.loader.load()函数的url参数则需要用到资源对象的nativeUrl属性。

总结

非内置资源的加载方式,通过cc.loader.loadRres获取资源对象,在通过cc.loader.load通过资源对象的nativeUrl属性获取资源内容。

cc.loader.loadRes("configure/character", function(err, conf) {
    if (err) {
        cc.error(err.message);
        return;
    }
    
    cc.loader.load(conf.nativeUrl,
    function(err, text) {
        console.log(text);
    });
});

这里character是一个文本文件,loadRes不要指定后缀名。

相关标签: Cocos Creator