Cocos2d-x Lua运行流程

2019-09-30  本文已影响0人  白小白152

Cocos2d-luaCocos2d-x引擎添加了Lua绑定的版本。使用C++Cocos2d-x引擎开发时,编写的代码是直接调用Cocos2d-x引擎的API,因为Cocos2d-x引擎也是使用C++编写的,所以无需进行语言转换。而使用LuaCocos2d-x编码时,编写的代码必须通过LuaEngine引擎执行,LuaEngine引擎封装了Cocos2d-x引擎的API,所以相当于使用Lua脚本在调用Cocos2d-xAPI

Cocos2d-lua.png Cocos2d-lua.png

主入口文件 main.lua

main.lua启动文件是Cocos2d-lua项目默认主入口,项目启动时默认首先执行main.lua文件。

运行流程

步骤0:设置 编译后的客户端开始执行时,使用FileUtils加载Luac文件的提示是否显示。

cc.FileUtils:getInstance():setPopupNotify(true)

步骤1:将源代码src目录和资源res目录添加到文件搜索路径

cc.FileUtils:getInstance():addSearchPath("src/")
cc.FileUtils:getInstance():addSearchPath("res/")
注:通过addSearchPath()方法设置源代码和资源的搜索路径

步骤2:加载配置文件读取配置

require "config"

步骤3:执行初始化

加载cocos/init.lua文件,根据config.lua配置文件对cocos2d-lua框架进行初始化。

require "cocos.init"

步骤4:加载app目录下MyApp.lua文件,创建App对象并调用run()函数。

local function main()
    require("app.MyApp"):create():run()
end

配置文件 config.lua

默认应用 MyApp.lua

应用文件:app/MyApp.lua

local  MyApp = class("MyApp", cc.load("mvc").AppBase)
function MyApp:onCreate()
    math.randomseed(os.time())
end
return MyApp

MVC

MVC是一种组合设计模式,被广泛应用在带有图形交互的用户界面程序(GUI)开发中。MVC的宗旨在于分离关注点(SoC),将界面表现和业务逻辑分离。(SoC)原则在现代软件工程中是一个非常重要的设计理念。对于实际问题,要划分不同的关注点,且关注点之间必须隔离开来,这样才能达到 更好的代码重用,以获得鲁棒性、可适配性、可维护性。

mvc.png
Cocos2d本身并不是基于MVC的理念设计的,在Cocos2d_xCCSceneCCLayerCCSprite等类都是CCNode的子类,开发流程基本是这样的:
  1. 通过应用程序代理类来初始化第一个即主场景
  2. 场景中实例化一个或多个布景图层,并将其添加进去。
  3. 布景图层中实例化一个或多个精灵,并将其添加进去。
  4. 场景处理用户输入,例如Touch事件和加速计的改变。同时更新布景图层和精灵,让精灵运行一个或多个动作等。
  5. 场景中运行一个游戏循环(一般是1/60更新一次),然后布景图层和精灵在游戏循环中做更新和游戏逻辑。

对于手游而言,界面UI的布局与显示都是由View负责的,点击事件手势滑动等操作是由Controller来处理的,游戏中需要的数据是由Model负责的。

local MyApp = class("MyApp", cc.load("mvc").AppBase)

/src/packages/mvc/AppBase.lua中定义了一个AppBase基类,作为所有Quick游戏的Lua入口,由player新建的工程,有个app/MyApp.lua文件就是继承自AppBase类。

AppBase功能类似于iOS工程中的AppDelegate.m 实现的功能:

上一篇下一篇

猜你喜欢

热点阅读