cocos creator基础-(二十四)cc.Director与资源加载策略

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) {

    // },
});

原文地址:https://www.cnblogs.com/orxx/p/10546926.html

时间: 2024-07-30 01:42:38

cocos creator基础-(二十四)cc.Director与资源加载策略的相关文章

cocos creator基础-(二十五)FileUtils本地文件读写

1: 掌握jsb.fileUtils的基本使用; FileUtils API   CCFileUtils.h 1:jsb是javascript bind的代表,整个C/C++ 导出的绑定都在这个jsb里面,jsb 支持native,不支持h5(浏览器上无法运行jsb is not defined ); 2: FileUtils是本地文件读写的一个工具类,全局只有一个实例; 3: jsb.fileUtils来获取文件读写工具类的实例; 4: jsb.fileUtils.isDirectoryExi

cocos creator基础-(二十)物理引擎碰撞检测

1: 理解物体类型和分类,配置碰撞矩阵;2: 编写碰撞响应函数,监听碰撞事件;3: 学会了解Sensor来做触发器,只触发碰撞不改变运动; 物体类型与碰撞矩阵 1: 添加物体类型: Add Layer, 每个类型对应一个名字group与groupIndex2: 创建物体的时候要选择一个类型;3: 配置碰撞矩阵,决定哪些物体类型碰撞; 碰撞事件监听 1: 刚体组件开启碰撞监听;2: 当有碰撞发生的时候,遍历刚体所在的节点所挂的所有的组件,看组件是否实现了碰撞检测函数,如果是,那么调用;3: 在需要

cocos creator基础-(二十九)动画编辑器编辑地图路径

思路 1.利用动画编辑器,设置一个路径,多个路径就编辑多个动画 2.用特定的代码对动画进行处理,获取到路径坐标,大佬已经写好代码,不用自己重复造轮子了(微元法求曲线长度) 获得动画路径的贝塞尔曲线方程 求得每一段贝塞尔曲线的长度 每隔一小段打一个点 最终生成一个路径 3.编写寻路脚本,挂载到物体上,让沿着路径移动 动画编辑 脚本挂载 // gen_map_path.js 动画路径转换坐标的代码 已经升级到2.x cc.Class({ extends: cc.Component, properti

Bootstrap<基础二十四> 缩略图

Bootstrap 缩略图.大多数站点都需要在网格中布局图像.视频.文本等.Bootstrap 通过缩略图为此提供了一种简便的方式.使用 Bootstrap 创建缩略图的步骤如下: 在图像周围添加带有 class .thumbnail 的 <a> 标签. 这会添加四个像素的内边距(padding)和一个灰色的边框. 当鼠标悬停在图像上时,会动画显示出图像的轮廓. 下面的实例演示了默认的缩略图: <!DOCTYPE html> <html> <head> &l

cocos creator基础-(二十三)android环境搭建、h5/android 打包发布

1: 了解h5打包发布,要注意的事项; 2: 完成android环境配置与creator 项目android打包; 3: 使用 eclips打开项目或android-studio; h5打包发布 1:引擎模块裁剪,减少引擎体积; 2: resources目录的特性,减少setting.js体积; 3: 订制启动的logo,与样式; 4: resources特性 a:creator里面会根据场景的依赖来打包的我们的资源, 资源没有用的,将不会被打包进来; b:有时候我们需要代码加载我们的资源, c

linux基础二十四

1.二进制程序的访问方法     vim /etc/profile.d/apache.sh     PATH=/usr/local/apache/bin:/usr/local/apache/sbin=$PATH     export PATH      2.头文件输出给系统     ln -sv /sur/local/apache/include /usr/include/httpd 3.库文件输出     vim /etc/ld.so.conf.d/httpd.conf     /usr/lo

JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件

http://www.tuicool.com/articles/M7ZR3y 原文 http://blog.csdn.net/kylinsoong/article/details/12623997 主题 WildFlyXMLJBoss AS 内容概述 JBoss7/WildFly设底层框架一大亮点的Module class loading,及每一个相对独立的模块看作一个Module,每个Module都有自己的class loader,Module之间可以相互依赖,如下图: 当JBoss7安装完成

Directx11学习笔记【二十】 使用DirectX Tool Kit加载mesh

本文由zhangbaochong原创,转载请注明出处: 现在directx已经不再支持.x文件了,意味着D3DXLoadMeshFromX加载mesh的方法已经不能用了.要加载mesh除了自己解析文件外,最简单的方法是利用微软开源的工具DirectXTK中的Model类或者DXUT中的CDXUTSDKMesh类.这里以DirectXTK为例,看看如何加载的吧! 1.格式转化 DirectXTK中的Model类支持.sdkmesh和.cmo格式,所以下载的.obj..fbx等格式的文件必须转化成支

《Spring揭秘》(十) ---- ApplicationContext之统一资源加载策略

Spring的resource Spring框架内部使用Resource接口作为所有资源的抽象和接口.例如: BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("...")); ClassPathResource就是Resource的一个特定类型的实现,代表的实位于Classpath中的资源. Resource接口可以根据资源的不同类型,或者资源所处的不同场合,给出相应的具体实现: a. ByteArr