cocos3.0 从main.lua开始


Main.lua是Cocos2d-lua项目的默认入口,即项目启动时,首先执行这个文件。(我们也可以修改config.json文件的entry字段来配置入口文件)
main.lua中进行了几项操作:
a) 把res和src两个文件夹添加到文件搜索路径。
b) 读取Config.lua加载lua配置信息。执行Cocos.init,这个文件根据配置信息初始化Cocos2d-lua框架(require加载lua模块时必须使用”.”来代替路径中的”/”符号)
c) 创建App文件夹中的App对象,调用run函数,run函数可以有参数,用于配置第一个进入的场景,默认是MainScene。从App对象开始才是是码农朋友们的劳动场所,一般从这里开始添加游戏逻辑。
Config.lua提供了几个字段用于配置项目。这里简单介绍下这几个字段:
DEBUG字段:设置输出调试信息的登记,0为无,1为少量的,2为完全的。这其实是通过控制几个不同的print函数是否输出信息来达成的。
CC_USE_FRAMEWORK字段:设置是否使用quick框架,包括MVC框架。
CC_SHOW_FPS字段:是否显示FPS等显卡相关信息。
CC_DISABLE_GLOBAL字段:是否允许定义全局字段,具体可看此篇说明:
http://cocoslua.cn/2014/12/disable-global-var/
CC_DESIGN_RESOLUTION字段:设置在不同分辨率下,游戏分辨率的调整策略,具体可参考此篇教程:http://cn.cocos2d-x.org/tutorial/show?id=1434
在执行cocos/init.lua的时候,就会根据上述配置信息,来配置项目。
Cocos-Lua项目自带的MVC框架
自带的MVC框架的基础代码在创建的项目的src/package/mvc中可以找到。这里边有三个文件AppBase.lua、init.lua、ViewBase.lua。
AppBase:算是MVC框架的管理角色,主要管理View对象,比如提供了一些接口用于切换View。
ViewBase.lua:继承于2d-x的Node类型。但其中的ShowWIthScene接口会创建一个Scene文件,把View自身添加到这个Scene上,并命令全局显示这个Scene。
Init.lua:不用说,看字面就知道,这个用于初始化MVC框架。
基于MVC框架开始给我们的游戏添加逻辑:
MVC框架填充逻辑的地方默认在app文件夹中(res/app或者src/app)。
默认会在这个文件夹下生成MyApp.lua和Views文件夹,我们应该在views中为每个游戏场景添加一个继承自ViewBase的类,加载CocosStudio编辑出来的界面,处理交互、动画等界面逻辑,并调用models中的类处理游戏逻辑;此外我们还需要在这个文件夹下添加一个model文件夹,用来填写游戏的逻辑代码。

cocos3.0 从main.lua开始_第1张图片
MVC具体游戏逻辑的文件结构

在MyApp.lua中,我们可以重写onCreate函数,在这里添加进入第一个游戏界面之前的处理逻辑,我们的示例游戏比较简单,不需要在这里做什么特殊处理。在onCreate执行完之后,紧接着会执行AppBase的run函数,这个函数在Main.lua中调用,这个函数有一个参数,用来决定进入的第一个View,如果不填写这个参数,默认会进入MainScene.lua文件。

主界面:

MainScene.lua的代码如下:

  1. --MainScene.lua 
  2. --创建一个MainScne类,继承ViewBase对象 
  3. local MainScene = class("MainScene",cc.load("mvc").ViewBase) 
  4. --重载onCreate函数 
  5. function MainScene:onCreate() 
  6.     --加载CocosStudio编辑出来的MainScene.csb 
  7.     local root = cc.CSLoader:createNode("MainScene.csb"
  8.     root:addTo(self) 
  9.     local function onPlay() 
  10.         --进入PlayScene,使用闭包catch self变量。 
  11.         self:getApp():enterScene("PlayScene"
  12.     end 
  13.     --获取名称为PlayButton的按钮,然后添加这个按钮在接受到点击时的处理代码 
  14.     root:getChildByName("PlayButton"
  15.         :addClickEventListener(onPlay) 
  16. end 
  17. return MainScene 


大部分逻辑上述代码中的注释都有写明。
然后点击Code IDE工具栏的运行按钮:\
接着就可以看到我们的MainScene界面啦:

你可能感兴趣的:(cocos3.0 从main.lua开始)