cocos2dx之lua项目开发中MVC框架的简单应用
转载于:http://www.2cto.com/kf/201504/386984.html 最近的游戏项目中使用了lua脚本来开发,项目中用到了MVC框架,最近有朋友问我怎么弄,在这里简单分享一下思路和一些开发中的技巧。 先简单说说MVC,即Model View Controller。Model(模型),一般负责数据的处理;View(视图),一般负责界面的显示;Controller(控制器),一般负责前端的逻辑处理。拿一款手机游戏来说,界面UI的显示、布局等就是View负责;点击了按钮,手势的滑动等操作由Controller来处理;游戏中需要的数据资源就交给Model。 接下来,看看在游戏开发中怎么用,这里用Lua(环境使用cocos code ide)给大家说说。 先来看看项目的目录结构:
其中cocos、Controller、Model、View这个不用多说,Event里面保存的全局消息类型,Managers是用于管理游戏中的东东的,比如管理资源,管理各种场景切换,层的切换等等。Utilities提供一些工具类,比如字符串的处理等。大家也可以根据自己的需求来定制目录,比如定义一个NetCenter文件夹,专门用于处理网络的。本例子中没有用到数据操作和工具类,所以这两个文件夹为空。 我们以游戏的运行流程为线索来展开说明。 运行项目,进入到main.lua文件,来看看main函数:
我们最后调用了GameScene类中的startGame函数,来看看GameScene这个类:
在startGame函数中,我们创建了一个空场景,然后调用SceneManager场景管理器来初始化场景。最后调用enterGame函数正式进入游戏主界面,其中enterGame函数中又有一个LayerManager层管理器。我们来看看这两个管理器是如何工作的。先看看SceneManager: |
--场景管理器
SceneManager = {}
--背景层
bgLayer = nil
--游戏层
gameLayer = nil
--弹窗层
panelLayer = nil
function SceneManager:initLayer(scene)
bgLayer = cc.Layer:create()
scene:addChild(bgLayer)
gameLayer = cc.Layer:create()
scene:addChild(gameLayer)
panelLayer = cc.Layer:create()
scene:addChild(panelLayer)
很简单,按顺序初始化了三个空Layer。再来看看LayerManager管理器:
|