cocoscreator基础-(二十四)cc.director与资源加载策略(代码片段)

orxx orxx     2023-03-09     361

关键词:

1: 了解creator场景切换;
2: 了解director基本的一些接口;
3: 理解资源加载的策略;
 
cc.Director对象
1:游戏里面控制管理整个游戏全局对象,包括了场景切换等,为cc.Director对象;
2:导演对象全局只有一个cc.director,大写的为类, 小写的cc.director为全局的导演对象;
3: cc.director来获取导演对象实例;
4: 游戏中各种管理对象都可以通过cc.director获取,比如物理引擎管理,Action管理, 碰撞检测管理等;

常用接口
1: getWinSize: 适配后的逻辑大小;
2: getWinSizeInPixels: 获取窗口的像素大小;
3: getScene: 获取当前的逻辑场景,场景对象下面是Canvas;
4: setDisplayStats: 是否显示左下角FPS信息;
5: getCollisionManager: 获取碰撞检测管理对象;
6: getPhysicsManager :获取物理引擎管理对象;
7:loadScene(scene_name):加载场景,场景的名字,系统会加载对应的场景
8:preloadScene(scene_name):预加载场景

资源加载策略

1: h5资源加载的过程:
  (1)从服务器上下载来来资源,并把资源加载到内存中,所以你在做h5游戏,你要把你当前游戏中要用到的资源先加载下来,否者的话,你在运行的时候去加载就来不及了(h5卡住);
2:三种资源加载策略:
  1>: h5的小游戏:采用全部提前绑定好所有的资源。编写预加载脚本preload.js,
    将要加载的资源手动关联到第一个启动的场景上面,一次性预加载所有;
  2>: 添加等待界面,预加载下一个场景,然后再进行切换,提前关联好下一个场景要的资源,每一个需要加载资源的场景都应该挂载一个preload.js脚本区关联资源;
    cc.loader.onProgress = function ( completedCount, totalCount, item )
      console.log("completedCount:" + completedCount + ",totalCount:" + totalCount );
    ;
3> 嫌手动关联麻烦,在场景切换中加入过渡场景,代码来加载场景的资源:
  cc.loader.loadResAll("textures", function (err, assets)
  );
  代码加载资源会导致setting.js文件过大,一般尽量少在代码里面加载资源;
//preload.js  挂载资源的脚本
cc.Class(
    extends: cc.Component,

    properties: 
        // foo: 
        //    default: null,      // The default value will be used only when the component attaching
        //                           to a node for the first time
        //    url: cc.Texture2D,  // optional, default is typeof default
        //    serializable: true, // optional, default is true
        //    visible: true,      // optional, default is true
        //    displayName: ‘Foo‘, // optional
        //    readonly: false,    // optional, default is false
        // ,
        // ...

        img_array: 
            type: cc.SpriteFrame,
            default: [],
        ,

        atlas_array: 
            default: [],
            type: cc.SpriteAtlas,
        ,

        sound_array: 
            default: [],
            url: cc.AudioClip,
        ,

        prefab_array: 
            default: [],
            type: cc.Prefab,
        ,
    ,

    // use this for initialization
    onLoad: function () 

    ,

    // called every frame, uncomment this function to activate update callback
    // update: function (dt) 

    // ,
);
//home_scene.js  预加载下个场景资源的处理脚本
cc.Class(
    extends: cc.Component,

    properties: 
        // foo: 
        //    default: null,      // The default value will be used only when the component attaching
        //                           to a node for the first time
        //    url: cc.Texture2D,  // optional, default is typeof default
        //    serializable: true, // optional, default is true
        //    visible: true,      // optional, default is true
        //    displayName: ‘Foo‘, // optional
        //    readonly: false,    // optional, default is false
        // ,
        // ...

        wait: 
            type: cc.Node,
            default: null,
        ,

        progress_label: 
            type: cc.Label,
            default: null,
        ,
    ,

    // use this for initialization
    onLoad: function () 
        this.wait.active = false;
        this.progress_label.string = "0%";
    ,

    goto_roadmap: function() 
        // 你在做场景切换的时候,如果你直接切换过去,
        // 由于下一个场景一定要先加载完它所需要的资源,那么一定会卡住一段时间;
        // 会在这里加上我们的等待界面,加入,场景加载的等待场景;
        this.wait.active = true;
        cc.loader.onProgress = function(completedCount, totalCount, item)
            console.log("completedCount:" + completedCount + ",totalCount:" + totalCount);
            var per = Math.floor(completedCount * 100 / totalCount);
            this.progress_label.string = per + "%";
        .bind(this);

        // 预加载
        cc.director.preloadScene("roadmap_scene", function() 
            cc.loader.onProgress = null;
            cc.director.loadScene("roadmap_scene");
        );
        // end 
    ,

    // called every frame, uncomment this function to activate update callback
    // update: function (dt) 

    // ,
);

 

零基础学java—接口(二十四)

【零基础学Java】—接口(二十四)一、接口生活中的接口:接口就是一种公共的规范标准,只要符合规范标准,就可以大家通用Java接口:接口(英文:Interface),在JAVA编程语言中是一个抽... 查看详情

python基础(二十四):面向对象核心知识(代码片段)

文章目录面向对象核心知识一、面向对象三大特性1、封装2、继承3、多态二、多态1、了解多态2、体验多态三、类属性和实例属性 1、类属性2、实例属性四、类方法和静态方法1、类方法2、静态方法面向对象核心知识一、面向对... 查看详情

python基础(二十四):面向对象核心知识(代码片段)

文章目录面向对象核心知识一、面向对象三大特性1、封装2、继承3、多态二、多态1、了解多态2、体验多态三、类属性和实例属性 1、类属性2、实例属性四、类方法和静态方法1、类方法2、静态方法面向对象核心知识一、面向对... 查看详情

cocoscreator基础-(二十)物理引擎碰撞检测(代码片段)

1:理解物体类型和分类,配置碰撞矩阵;2:编写碰撞响应函数,监听碰撞事件;3:学会了解Sensor来做触发器,只触发碰撞不改变运动;物体类型与碰撞矩阵1:添加物体类型:AddLayer,每个类型对应一个名字group与groupIndex2:创建物体的时候要选... 查看详情

cocoscreator基础-(二十五)fileutils本地文件读写(代码片段)

1:掌握jsb.fileUtils的基本使用; FileUtils API  CCFileUtils.h 1:jsb是javascriptbind的代表,整个C/C++导出的绑定都在这个jsb里面,jsb支持native,不支持h5(浏览器上无法运行jsbisnotdefined);2:FileUtils是本地文件读写的一个工具类,... 查看详情

cocoscreator基础-(二十九)动画编辑器编辑地图路径(代码片段)

思路1、利用动画编辑器,设置一个路径,多个路径就编辑多个动画2、用特定的代码对动画进行处理,获取到路径坐标,大佬已经写好代码,不用自己重复造轮子了(微元法求曲线长度)  获得动画路径的贝塞尔曲线方程  ... 查看详情

大数据必学java基础(二十四):数组的引入和学习(代码片段)

文章目录数组的引入和学习一、数组的引入1、习题引入二、数组的学习1、数组的定义2、数组的学习三、完善引入的习题_数组的遍历1、代码2、用IDEA验证数组的确将数据进行存储了 数组的引入和学习一、数组的引入1、习题引... 查看详情

《c#零基础入门之百识百例》(二十四)数组排序--插入排序

C#零基础入门数组相关--插入排序前言一,插入排序1.1原理介绍1.2步骤解释1.3动图理解二,代码解析2.1参考代码2.2计数交换三,实例练习–优化插入排序3.1思路分析3.2参考代码前言本文属于C#零基础入门之百识百例系列文章。此系... 查看详情

elasticsearch实战(二十四)-数据更新过程与单条数据更新方式

本文主要讲解ElasticSearch数据更新过程与单条数据更新方式,帮助大家打好ElasticSearch基础。——continue 查看详情

零基础入门前端系列—动画和弹性盒模型(二十四)

【零基础入门前端系列】—动画和弹性盒模型(二十四)一、概念动画是使元素从一种样式逐渐变化为另一种样式,你可以改变任意多的样式任意多的次数。请用百分比来规定变化发生的时间,或用关键词​​from​​​和​​to... 查看详情

golang✔️走进go语言✔️第二十四课tcp高阶操作(代码片段)

【Golang】✔️走进Go语言✔️第二十四课TCP高阶操作概述基础知识Conn接口net.Listen()listener.Accept()conn.Read()conn.Write()交互式通信服务器客户端输出结果:概述Golang是一个跨平台的新生编程语言.今天小白就带大家一起携手走进Golang的世... 查看详情

golang✔️走进go语言✔️第二十四课tcp高阶操作(代码片段)

【Golang】✔️走进Go语言✔️第二十四课TCP高阶操作概述基础知识Conn接口net.Listen()listener.Accept()conn.Read()conn.Write()交互式通信服务器客户端输出结果:概述Golang是一个跨平台的新生编程语言.今天小白就带大家一起携手走进Golang的世... 查看详情

重新整理.netcore实践篇—————应用分层[二十四](代码片段)

...整理一下分层。正文应用程序分层,分为:1.领域模型层2.基础设施层3.应用层4.共享层共享层共享层一般包括下面几个类库。有一个Core的类库,比如说BLog.Core.这个类库用来,主要用来承载一些基础简单的类型,比如说一下帮助类... 查看详情

linux从青铜到王者第二十四篇:linux网络基础第四篇之websocket协议(代码片段)

系列文章目录文章目录系列文章目录前言一、WebSocket简介二、WebSocket产生背景三、WebSocket实现原理四、WebSocket协议举例五、WebSocket使用1.WebSocket介绍2.WebSocketAPI3.WebSocket事件1.open2.Message3.Error4.Close4.WebSocket方法1.send()2.close()5.WebSocket... 查看详情

gameframework教程✨(二十四)实体2021.09.08修订版

...。下面我们就来看看GF是怎样使用实体的吧!一、GF实体基础使用逻辑GF实体模块与UI模块的区别:UI模块需要把UI的逻辑脚本绑定到UI预制体上,实体不用。UI模块,打开UI的方法会返回给我们UIid,实体不会,且需要我们打开实体... 查看详情

redis(二十四)-秒杀案例之库存遗留问题解决(代码片段)

...您阅读本文,欢迎一键三连哦。💪🏻1.Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。Python从入门到精通❤️2.Python爬虫专栏,系统性的学习爬虫的知识点。9.9元买不了吃亏,... 查看详情

初级算法探索——动态规划篇(二十四)

未完待续 查看详情

第二十四讲:状态模式

改变对象的内部状态hour,然后判断内部状态而改变对象的行为.但是这样的设计是非常不合理的.  查看详情