cocos2d-x editor 新建工程时会自动生成游戏框架,如下图
红色边框共有五个区域
- idea 是自动生成的目录,读者不需要操作
- Source是主工程目录,所有的设计和编码都在该目录下完成;
- Resource是项目的资源存放处,包括贴图,字体,粒子,声音等等
- main.js,是程序的主函数入口,里面代码主要用来根据游戏平台处理不同的事件;也控制游戏场景的切换,比如游戏场景一般都包括(选关场景,道具场景,主游戏场景,得分场景等),主函数可以选择你第一进入的场景。main.xml 主要包括游戏的配置,包括游戏运行平台的分辨率,调试模拟器的分辨率。
- MainLayer.ccbx是游戏主场景的设计区域,MainLayer.js是编码区域,一个.ccbx对应一个.js,命名必须保持一致。比如,如果你要做选关界面,可以新建 SelectLayer.ccbx 和SelectLayer.js
下面具体分析
Main.js 游戏主函数 :代码里有注解,里面的函数 replaceScene,loadAsScene,loadAsSceneFrom,loadAsNodeFrom, 都是场景切换函数,以后编程时可以直接拿过来用。runScene是运行场景,通过cc.BuilderReader.runScene("", "MainLayer"); 这句代码可以进入主函数
if (sys.platform == 'browser') {
var require = function (file) {
var d = document;
var s = d.createElement('script');
s.src = file;
d.body.appendChild(s);
}
} else {
require("jsb.js");
}
cc.debug = function (msg) {
cc.log(msg);
}
cc.BuilderReader.replaceScene = function (path, ccbName) { //场景替换
var scene = cc.BuilderReader.loadAsSceneFrom(path, ccbName);
cc.Director.getInstance().replaceScene(scene);
return scene;
}
cc.BuilderReader.loadAsScene = function (file, owner, parentSize) { //从owner获取场景
var node = cc.BuilderReader.load(file, owner, parentSize);
var scene = cc.Scene.create();
scene.addChild(node);
return scene;
};
cc.BuilderReader.loadAsSceneFrom = function (path, ccbName) { //从ccb获取场景
cc.BuilderReader.setResourcePath(path + "/");
return cc.BuilderReader.loadAsScene(path + "/" + ccbName);
}
cc.BuilderReader.loadAsNodeFrom = function (path, ccbName, owner) {
cc.BuilderReader.setResourcePath(path + "/");
return cc.BuilderReader.load(path + "/" + ccbName, owner);
}
cc.BuilderReader.runScene = function (module, name) { //运行场景
var director = cc.Director.getInstance();
var scene = cc.BuilderReader.loadAsSceneFrom(module, name);
var runningScene = director.getRunningScene();
if (runningScene === null) {
cc.log("runWithScene");
director.runWithScene(scene);
}
else {
cc.log("replaceScene");
director.repla