zoukankan      html  css  js  c++  java
  • cc.game

    概述

      使用cc.game单例代替了原有的cc.Application以及cc.AppControl

      cc.game是Cocos2d-JS的游戏对象,主要职责包括,配置的读取,引擎的加载,游戏脚本的加载,以及游戏的启动。
      简化了工程启动代码的编写。

      cc.game对象目前的设计非常精简,使用也非常简单,开发者需要关注的只有非常有限的几个函数:onStartrunprepare

    使用

      进行入口代码编写,一般放在main.js中。

      项目启动代码的编写较v2版本是大大的精简了,使用起来会更加舒服:

    cc.game.onStart = function(){
        //load resources
        cc.LoaderScene.preload(resource_list, function () {
            cc.director.runScene(new MyScene());
        }, this);
    };
    cc.game.run();

       这段范例代码中,onStart是引擎加载完成并且开始游戏主循环之前会被调用的回调函数,开发者需要先通过赋值注册自己的游戏入口函数。通常在这个入口函数中,开发者需要使用cc.LoaderScene预加载入口场景所依赖的资源,并在加载完成后启动游戏的入口场景。虽然在JSB中,资源的预加载并不是必须的,因为依赖资源都存在App包中,但是还是推荐用这种方式来书写以保障Web平台和Native平台上游戏代码的统一性。

       当run的时候,引擎会自动读取project.json配置文件获取配置信息。

    延迟运行

      当游戏运行于Web页面中时,开发者可能需要延时启动游戏,比如等待用户点击某个按键。Cocos2d-JS支持游戏的延时运行,开发者可以通过cc.game.prepare函数来预先加载引擎和游戏脚本并准备游戏执行环境,在合适的时机再调用cc.game.run来开始游戏。

    cc.game.onStart = function(){
        //load resources
        cc.LoaderScene.preload(resource_list, function () {
            cc.director.runScene(new MyScene());
        }, this);
    };
    cc.game.prepare(); // 开始加载引擎和游戏脚本,准备游戏执行环境
    
    document.getElementById("myBtn").addEventListener("click", function(){
        cc.game.run();
    });

    debugMode 常量

    对应于project.json中的debugMode字段的配置:

    DEBUG_MODE_NONE : 0                     //都不开启
    DEBUG_MODE_INFO : 1                     //用控制台输出INFO、WARN、ERROR级别日志
    DEBUG_MODE_WARN : 2                     //用控制台输出WARN、ERROR级别日志
    DEBUG_MODE_ERROR : 3                    //用控制台输出ERROR级别日志
    DEBUG_MODE_INFO_FOR_WEB_PAGE : 4        //用HTML界面(jsb为控制台)输出INFO、WARN、ERROR级别日志
    DEBUG_MODE_WARN_FOR_WEB_PAGE : 5        //用HTML界面(jsb为控制台)输出WARN、ERROR级别日志
    DEBUG_MODE_ERROR_FOR_WEB_PAGE : 6       //用HTML界面(jsb为控制台)输出ERROR级别日志

    CONFIG_KEY 常量

    project.json配置文件的key名称:

    engineDir : "engineDir",
    dependencies : "dependencies",
    debugMode : "debugMode",
    showFPS : "showFPS",
    frameRate : "frameRate",
    id : "id",
    renderMode : "renderMode",
    jsList : "jsList",
    classReleaseMode : "classReleaseMode"

    要获取配置文件的值,可以这么使用:cc.game.config[cc.game.CONFIG_KEY.showFPS]

    EVENT_HIDE和EVENT_SHOW事件

    cc.game还支持对游戏进入后台和前台的事件监听:cc.game.EVENT_HIDEcc.game.EVENT_SHOW事件。在Web平台上浏览器tab页面的切换,浏览器的关闭都可能会触发cc.game.EVENT_HIDE事件,返回游戏页面则会触发cc.game.EVENT_SHOW事件,不过由于浏览器的不同实现,浏览器中这些事件的触发并不被保障,所以请不要依赖cc.game.EVENT_HIDE事件来做关键的数据处理。在Native平台上,这两个事件则会在游戏切换至后台与前台的时候被调用,不同于Web平台,Native平台上这两个事件的触发是有保障的。

    cc.eventManager.addCustomListener(cc.game.EVENT_HIDE, function(){
        //处理游戏进入后台的情况
    });
    cc.eventManager.addCustomListener(cc.game.EVENT_SHOW, function(){
        //处理返回游戏的情况
    });

    启动流程

    cc.game.runcc.game.prepare的调用将启动引擎和游戏的加载,游戏进程启动流程如下:

    1. 首先开始加载引擎相关脚本,在Web中加载Web引擎本身,在原生应用中则会加载引擎依赖的附加JS脚本。
    2. 加载用户JS脚本。
    3. 收集系统和平台相关信息,初始化渲染器。
    4. 启动cc.director的游戏主循环逻辑。
    5. 调用onStart入口函数以执行用户的启动逻辑。
  • 相关阅读:
    Linux下C语言执行shell命令
    netstat实现原理
    安装docker
    springboot启动提示连接mysql报错:java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required
    linux删除用户报错:userdel: user prize is currently used by process 28021
    centos的6.9版本安装openjdk1.8
    centos的6.9版本安装mysql
    安装mysql报错:Can't find messagefile '/usr/share/mysql/english/errmsg.sys'和/usr/bin/mysqladmin: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or
    安装docker报错:https://download.docker.com/linux/centos/7/i386/stable/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22
    linux配置docker报错:ImportError: No module named yum
  • 原文地址:https://www.cnblogs.com/Medeor/p/5043162.html
Copyright © 2011-2022 走看看