位置: 编程技术 - 正文

cocos2dx之lua项目开发中MVC框架的简单应用(cocoscreator lua)

编辑:rootadmin
****************************************************************************

推荐整理分享cocos2dx之lua项目开发中MVC框架的简单应用(cocoscreator lua),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:cocos luajit,cocos lua调试,cocos lua js,cocos lua js,cocos luajit,cocos2dx lua教程,cocoscreator lua,cocos luajit,内容如对您有帮助,希望把文章链接给更多的朋友!

时间:--

作者:Sharing_Li

转载注明出处:

最近的游戏项目中使用了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函数:

cocos2dx之lua项目开发中MVC框架的简单应用(cocoscreator lua)

我们最后调用了GameScene类中的startGame函数,来看看GameScene这个类:

在startGame函数中,我们创建了一个空场景,然后调用SceneManager场景管理器来初始化场景。最后调用enterGame函数正式进入游戏主界面,其中enterGame函数中又有一个LayerManager层管理器。我们来看看这两个管理器是如何工作的。先看看SceneManager:

很简单,按顺序初始化了三个空Layer。再来看看LayerManager管理器:

看看gotoLayerByType这个函数,首先切换层的时候,看看当前层是否为空,不为空就删掉。然后根据传递过来的参数来判断要切换到哪个层。这里出现MVC中的Controller部分,看看是什么情况。这里调用了类MainLayerController中的create函数:

这里我们又发现了MVC中的View,在createUI函数中,我们调用了类MainLayerView的createUI函数,并将其添加到场景的游戏层中。我们来看看MainLayerView这个类。

可以看到,我们在主界面中添加了一张背景图和三个按钮。我们是通过资源管理器ResManager来管理游戏中的素材的,ResManager文件很简单:

这样做的好处是,如果图片改了名字或者换了路径等,只需要在这里改一次就可以了。

可以看到我们给三个按钮注册了响应函数menuCallback,在这个函数中,就是MVC中的V和C之间的“沟通”了。我们定义了一个自定义事件EVENT_CLICK_MENU_MAIN,并给这个事件添加了一个附带参数_usedata,这个参数保存的是三个按钮的tag。然后将这个事件发送给他的监听者。这里大家应该明白了,我们在对应的Controller中注册了EVENT_CLICK_MENU_MAIN的监听,但有这个事件发过来时,我们就响应。根据事件携带的参数_usedata,我们就知道了在View中,玩家点击了哪个按钮,这样做的好处是,保证了每个界面只有一个消息,我们只需要根据这个消息携带的附加参数来判断具体的事件,从而减少了消息个数,这样有助于游戏的效率。另外,我们在响应这个消息的时候,也会做一定的优化,来看看类MainLayerController的响应函数:

可以看到实际情况,我们并不需要对传递过来的参数进行判断,而是定义了一个函数数组,直接根据下标来调用对应的消息响应。之后继续通过各种管理器来对游戏内容进行变化,方式和MainLayerController和MainLayerView差不多。 到这里,MVC应用的简单介绍就结束啦,免费下载代码

call to OpenGL ES API with no current context (logged once per thread) 背景cocos2dxAndroid工程接入移动基地的短信扣费SDK;程序运行,扣费成功后程序崩溃。eclipselogcat提示:网上搜索到两个方法第一个方法:.在应用程序Androi

mac中quick-cocos2dx-2.2.5+sublime text 2搭建lua的开发环境 准备工作:1、首先下载quick-cocos2dx-2.2.5-plus-release版本的:

使用CoCos2dx-3.4开发一套可以商用的跑酷游戏 之三 初始界面的编写(1) 上次我们有看到了视频的演示,这个游戏我们是如何做出来的呢,今天我们就来学习其中的一个,初始化界面1:首先我们假设你已经创建了cocos2d-x的工

标签: cocoscreator lua

本文链接地址:https://www.jiuchutong.com/biancheng/368898.html 转载请保留说明!

上一篇:Cocos2d-x 3.0final 终结者系列教程23CocosStudio UI组件使用大全Cocos2d-x3.2使用

下一篇:call to OpenGL ES API with no current context (logged once per thread)

  • 工程设备一览表
  • 计算应纳税所得额时 不得扣除支出有哪些
  • 利润分配未分配利润和未分配利润的区别
  • 绿化养护合同免费
  • 项目固定资产投资强度
  • 未达起征点是什么
  • 红字发票票据怎么处理
  • 不动产视同销售增值税税率
  • 取得虚开增值税专票如何税务处理
  • 银行小额贷款是怎么还款的
  • 工程施工的保障措施
  • 收取招标代理费会计分录
  • 企业购买用于绿化的土地
  • 自产自销免税物品包括哪些
  • 税负的含义
  • 个人交年金的多少有什么区别
  • 跨地区建筑安装企业个人所得税征收方式申请表
  • 个税更正申报需要逐月更正吗
  • 收取施工队管理费
  • 专项储备期末有余额吗
  • 公司体检如何入账
  • 广告费超标今年怎么处理
  • 固定资产达到使用状态时发生的安装费用
  • 如何在vue项目中导入外部的包
  • 企业优惠促销活动中的税收筹划
  • 劳务公司开具劳务费发票
  • win11系统未激活
  • wordpress优化加快的好多个关键点
  • Http请求-hutool工具类的使用
  • 售后租回融资租赁帐务处理怎么做?
  • 财务费用是一种期间费用,按期归集
  • vue错误处理
  • 国内外人工智能发展现状,及最新的人工智能应用?
  • 什么叫相机标定
  • Vue3:探讨一下mixin
  • 递归最小二乘法辨识参数
  • php知识点汇总与解答
  • 小规模升级一般纳税人后可以降为小规模吗
  • 增值税发票查验结果不一致是什么意思
  • 预交增值税款在申报表哪里填列的
  • 商场返点怎么核算
  • python中线程可以用在哪些方面
  • SQL Server 中 RAISERROR 的用法详细介绍
  • 织梦logo怎么更换
  • 利息收入怎么入账
  • 银行汇票用什么会计分录
  • 固定资产处置时发生的清理费用
  • 政府会计制度应收账款坏账准备
  • 活动策划费属于哪个开票项目
  • 营业执照注销对商标有影响吗?
  • 什么是公司财务管理中的一个重要组成部分
  • 其他应付款在借方资产负债表怎么填
  • 收到社保局的生育津贴并付给职工如何入账
  • 营业税差额征税范围
  • 优秀员工奖金领取表模板
  • 企业计提什么意思
  • 费用预算表怎么做
  • 处置固定资产损失的账务处理
  • 获取sql
  • windows预览版
  • award bios设置图解教程
  • windows 10如何使用
  • win8系统搜索在哪里
  • windows8快速启动设置
  • win10电脑无法上网
  • centos安装zsh
  • win7系统网页无法调用摄像头
  • win7的系统设置
  • win10盘符怎么看
  • android:View的setTag和getTag使用
  • linux触控
  • express.js教程
  • mac版本eclipse 怎么使用
  • python框架flask系列
  • 税收效应分析供求曲线
  • 山东省地税局电话号码
  • 营改增后租金如何交税
  • 党员e先锋中的支部云课堂在哪
  • 电子税务局开电子发票如何更换开票人
  • 汽车燃油税每年要交吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设