application loader下载_cocos creator--cc_loader代码加载和释放资源

前言

在Cocos Creator游戏开发中,经常需要动态加载资源,所以了解并熟悉cc.loader的使用非常必要。

一、 cc.loader简介

1:有三个默认的Pipeline:

(1) assetLoader: 主要用于加载资源, 加载asset类型资源,和释放这些资源;

 (2) downloader: 主要用于下载文件, 文本,图像,脚本,声音,字体, 自定义的download;

 (3) loader:  第三个默认的Pipeline,可以加载json, image, plist, fnt, uuid;

2: 资源分为本地(assets目录下)与远程资源;

3: 加载异步的;

二、 本地资源加载

1: 在代码里面加载资源必须要求资源在assets/resources/文件夹下;

(1)根据场景的依赖关系来打包我们的资源;  去掉不用的资源

(2)无法判断在代码里面加载的资源,是哪些?-->所有的resources目录下的资源,都会被打包进去,你在代码里面就能加载到它了。

如果资源不在代码里面加载,一般不要放到resources目录下 ,如果放到了,这个资源不关你有没有用,都会被打包进去;

2: 资源的url不需要加assets/resources这个部分,路劲不需要加这个前缀;

3:cc.loader.loadRes(url, onComplete回掉函数);

4: loadResArray([], type类型, progressCallback, completeCallback);

5: loadResDir (url [type ] [progressCallback ] [completeCallback ]) 加载一个路径下的资源;

6: getRes(url, [type]); 获取资源id;

b35a9f9b1187f00d165e289078d5ef3a.png
const {ccclass, property} = cc._decorator;

@*ccclass*

export default class GameMgr extends *cc*.*Component* {

    @property(cc.*AudioSource*)

bgAudio : *cc*.*AudioSource* = null;

    @property({type:cc.*Sprite*, tooltip:"精灵组件"})

bgSprite : *cc*.*Sprite* = null;

    onLoad () {

        *this*.localLoad();

    }

    localLoad(){

        cc.loader.loadRes("bg", function(*err*, *ret*){

            if(err){

                cc.error(err.messager || err);

                return;

            }

            // 动态加载的音效资源

            *this*.bgAudio.clip = ret;

            *this*.bgAudio.play();

        }.bind(*this*));

        // 动态加载图片

        cc.loader.loadRes("imgs/disk", **<u>cc.SpriteFrame</u>**, function(*err*, *ret*){

            if(err){

                cc.error(err.messager || err);

                return;

            }

            *console*.log(ret)

            *console*.log(*this*.bgSprite);

            *this*.bgSprite.spriteFrame = ret;

        }.bind(*this*));

    }

}

运行结果如下:

63190bbaed48552571d3d794c5ce3bc8.png

三、 远程资源加载

1: cc.loader.load(url, 结束回掉函数);

2: cc.loader.load({url: “”, type: “”}, 结束回掉函数);

3: 远程加载任意类型文件;

我们采用NodeJS环境测试。

66dd3da909e9f8643ce5d6239b2969c5.png

注意:NodeJS环境中需要设置跨域访问,如下:

//设置跨域访问

app.all('*', function(req, res, next) {

    res.header("Access-Control-Allow-Origin", "*");

    res.header("Access-Control-Allow-Headers", "X-Requested-With");

    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");

    res.header("X-Powered-By", ' 3.2.1');

    res.header("Content-Type", "application/json;charset=utf-8");

    next();

});

GameMgr.ts代码修改如下:

onLoad () {

        //this.localLoad();

        *this*.remoteLoad();

    }

    remoteLoad(){

        cc.loader.load({url:"http://127.0.0.1:6080/res/bg.mp3", type:"mp3"},function(*err*, *ret*){

            if(err){

                cc.error(err.message || err);

                return;

            }

            // 动态加载的音效资源

            *this*.bgAudio.clip = ret;

            *this*.bgAudio.play();

        }.bind(*this*));

        cc.loader.load("http://127.0.0.1:6080/res/disk.png",function(*err*, *ret*){

            if(err){

                cc.error(err.message || err);

                return;

            }

            //console.log(ret);

            // 加载时候会自动识别资源类型,cc.Texture2D

            *this*.bgSprite.spriteFrame**<u>.</u>****<u>setTexture</u>****<u>(ret)</u>**;

            // 需要修改图片精灵所在节点的大小

            *this*.bgSprite.**<u>node.</u>****<u>setContentSize</u>****<u>(ret.width, ret.height)</u>**;

        }.bind(*this*));

    }

四、 资源卸载

1:每个场景有个自动释放资源

勾选上这个场景的资源会自动释放,不勾选上这个场景的资源不释放

2: 代码加载的资源,默认是不会受这个选项的影响的,除非设置

cc.loader.setAutoRelease(url, brealse)

3: 手动释放资源

loadRes/ releaseRes  

load / release

releaseAsset (资源对象的object);
超详细的学习路线免费获取​shimo.im
df483d04e49578cb2bdc79ec39843b70.png

更多视频教学:

哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibili​space.bilibili.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cocos2d是一种流行的2D游戏引擎,它支持多平台开发,包括iOS、Android、Windows、Mac OS X等。Cocos2d-python是Cocos2d-x游戏引擎的Python版本,它提供了许多强大的功能,如游戏场景、动画、精灵、物理引擎等,非常适合开发2D游戏。 下面是一个简单的Cocos2d-python的helloworld程序: 1. 安装Cocos2d-python 在安装Cocos2d-python之前,需要先安装Python和pip。然后使用pip命令安装Cocos2d-python: ``` pip install cocos2d ``` 2. 创建一个新的Cocos2d-python项目 打开命令行窗口,进入到要创建项目的目录,然后执行以下命令: ``` cocos new mygame -p com.mycompany.mygame -l python ``` 其中,mygame是项目名称,com.mycompany.mygame是包名。 3. 编写helloworld程序 在mygame项目的src目录下创建一个新的Python文件helloworld.py,然后输入以下代码: ```python import cocos class HelloWorld(cocos.layer.Layer): def __init__(self): super(HelloWorld, self).__init__() label = cocos.text.Label( 'Hello, world!', font_name='Times New Roman', font_size=32, anchor_x='center', anchor_y='center' ) label.position = 320, 240 self.add(label) if __name__ == '__main__': cocos.director.director.init() HelloWorldScene = cocos.scene.Scene(HelloWorld()) cocos.director.director.run(HelloWorldScene) ``` 这个程序创建了一个名为HelloWorld的Layer,该Layer包含一个居中显示的文本标签“Hello, world!”。最后,它创建了一个Scene,将HelloWorld添加到Scene中,并运行Scene。 4. 运行helloworld程序 在命令行窗口中进入mygame项目的根目录,然后执行以下命令: ``` python src/helloworld.py ``` 程序将会启动,并显示一个居中显示的“Hello, world!”文本标签。 这是一个简单的Cocos2d-python的helloworld程序,你可以在此基础上进一步学习Cocos2d-python的开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值