一、project.json
debugMode
0表示关闭调试模式,1表示log,2表示warn,3表示error,5表示logForWebPage,6表示warnForWebPage,7表示errorForWebPage。
renderMode
showFPS
frameRate
engineDir
用于指定引擎目录。区别在于,在v2版本中,指向的是**/cocos2d-html5/cocos2d,但在v3版本中,只要指向**/cocos2d-html5就行了。
默认为"frameworks/cocos2d-html5"。
jsList
id
modules
用于指定加载模块。
在v3版本中则使用modules字段,灵活进行配置,这也能较好的支持今后引擎进行模块裁剪。配置如下:
"modules" : ["extensions", "pluginx", "box2d", "chipmunk"]
举个例子:
"debugMode" : 1, "frameRate" : 60, "showFPS" : true, "id" : "gameCanvas", "renderMode" : 1, "jsList" : [ "src/bgScene01.js" ]
二、resource.js
resource.js文件是cocos2d-js中资源预加载文件
类似于下面的格式:
var res = { LoginUI_json : "res/ui/LoginUI.json", BroadcastUI_json : "res/ui/BroadcastUI.json" }; var g_resources = []; for (var i in res) { g_resources.push(res[i]); }
预加载不是完全需要的,但是序列帧、骨骼等一定需要预加载
三、cc.game类
cc.game是Cocos2d-JS的游戏对象,主要职责包括,配置的读取,引擎的加载,游戏脚本的加载,以及游戏的启动。
开发者需要关注的只有非常有限的几个函数:onStart,run,prepare。
使用
进行入口代码编写,一般放在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_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(){ //处理返回游戏的情况 });
启动流程
cc.game.run或cc.game.prepare的调用将启动引擎和游戏的加载,游戏进程启动流程如下:
- 首先开始加载引擎相关脚本,在Web中加载Web引擎本身,在原生应用中则会加载引擎依赖的附加JS脚本。
- 加载用户JS脚本。
- 收集系统和平台相关信息,初始化渲染器。
- 启动
cc.director的游戏主循环逻辑。 - 调用
onStart入口函数以执行用户的启动逻辑。
浙公网安备 33010602011771号