cc.game对象和游戏启动流程
来源:互联网 发布:阿里云服务器购买教程 编辑:程序博客网 时间:2024/05/22 06:13
cc.game
是Cocos2d-JS的游戏对象,主要职责包括,配置的读取,引擎的加载,游戏脚本的加载,以及游戏的启动。
cc.game
对象目前的设计非常精简,使用也非常简单,开发者需要关注的只有非常有限的几个函数:onStart
,run
,prepare
1.onStart
函数
新建Cocos2d-JS项目的启动代码位于main.js
中:
cc.game.onStart = function(){ if(!cc.sys.isNative && document.getElementById("cocosLoading")) document.body.removeChild(document.getElementById("cocosLoading")); cc.view.enableRetina(false); cc.view.adjustViewPort(true); cc.view.setDesignResolutionSize(800, 450, cc.ResolutionPolicy.SHOW_ALL); cc.view.resizeWithBrowserSize(true); cc.LoaderScene.preload(g_resources, function () { cc.director.runScene(new HelloWorldScene()); }, this);};cc.game.run();
段范例代码中,onStart
是引擎加载完成并且开始游戏主循环之前会被调用的回调函数,开发者需要先通过赋值注册自己的游戏入口函数。通常在这个入口函数中,开发者需要使用cc.LoaderScene
预加载入口场景所依赖的资源,并在加载完成后启动游戏的入口场景。虽然在JSB中,资源的预加载并不是必须的,因为依赖资源都存在App包中,但是还是推荐用这种方式来书写以保障Web平台和Native平台上游戏代码的统一性。
2.延迟运行
当游戏运行于Web页面中时,开发者可能需要延时启动游戏,比如等待用户点击某个按键。Cocos2d-JS支持游戏的延时运行,开发者可以通过cc.game.prepare
函数来预先加载引擎和游戏脚本并准备游戏执行环境,在合适的时机再调用cc.game.run
来开始游戏。
cc.game.onStart = function(){ // 预加载资源 cc.LoaderScene.preload(g_resources, function () { cc.director.runScene(new MyScene()); }, this);};// 开始加载引擎和游戏脚本,准备游戏执行环境cc.game.prepare();document.getElementById("myBtn").addEventListener("click", function(){ // 开始游戏 cc.game.run();});
3.EVENT_HIDE
和EVENT_SHOW
事件
cc.game
还支持对游戏进入后台和前台的事件监听:cc.game.EVENT_HIDE
和cc.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(){ //处理返回游戏的情况});
4.启动流程
cc.game.run
或cc.game.prepare
的调用将启动引擎和游戏的加载,游戏进程启动流程如下:
- 首先开始加载引擎相关脚本,在Web中加载Web引擎本身,在原生应用中则会加载引擎依赖的附加JS脚本
- 加载用户JS脚本
- 收集系统和平台相关信息,初始化渲染器
- 启动
cc.director
的游戏主循环逻辑 - 调用
onStart
入口函数以执行用户的启动逻辑
- cc.game对象和游戏启动流程
- Cocos2d-js cc.game项目启动
- 僵尸入侵游戏主体部分2--循环和game对象
- 启动的流程的活动对象和坐标
- 【DVB】DSM-CC OC搜索、解析和接收流程
- Uboot启动流程和Kernel启动流程
- adobedreamweaver CC 和cs6 启动弹出javascript错误
- 游戏开发流程和引擎
- 游戏game
- nginx的启动流程和接客流程
- app的启动流程和打包流程
- Object-Oriented Game Design(面向对象游戏设计)
- Object-Oriented Game Design (面向对象的游戏设计)
- Libgdx专题系列:对象篇 Game游戏控制中心 Screen 场景
- Silverlight游戏设计(Game Design):(五)面向对象的思想塑造游戏对象
- linux服务和启动流程
- ubuntu文件系统和启动流程
- Uboot 和 Linux启动流程
- iOS开发见闻-第2期
- hdu 1664如此爽的一道bfs+数论
- c语言的.h文件使用小记
- MyBatis整合Spring
- 推荐的讲解算法的网站、好博客:
- cc.game对象和游戏启动流程
- 利用CountDownTimer实现倒计时功能
- HDU 5475 平衡树/线段树
- Android定位入门(2)判断GPS是否开启
- 使用静态内部类提高封装性
- Ubuntu系统监听器
- 网址收集
- mybatis-config配置文档
- AsyncTask的学习