程序设计之LUA设计邮件系统
2013-11-01 19:57
525 查看
今天通过一周多的时间,把邮件系统提交了。但是还没测,还有很多细节需要继续修改。
自己程序设计的原则:1、满足需求不断变化的需求;2、使用最有效算法;3、是否存在内存泄露;4、程序模块化;5、数据、逻辑、ui的分离;
虽然自己设计的并不能满足以上的要求,基本还处于功能实现,逻辑基本疏通。跟自己的同事和主程间还有好长的一段路走。
首先自己设计邮箱系统有以下模块:收件列表,写信,每封信件详细信息(分个人邮件和系统邮件)。遇到的主要问题是各个层对象之间相互调用,数据使用与初始化的模块不清晰,还有就是自己在使用变量的时候犯的简单错误。下面是自己整个框架函数。通过函数说明。
以上就是自己邮件的模块,在这里使用到很多cocos比较常用的API(往后详细介绍)。自己的模块在数据和UI显示分离逻辑不够严谨,导致自己在调用的时候频频出现问题。并使用了全局变量为自己方便控制。以后要往模块化的方向去写,设计更多的模块,方便自己管理和减少程序运行BUG。在编写的时候,把自己的需求分析清楚,不急于编写。下一个任务已经出来了,有开始新的启程
自己程序设计的原则:1、满足需求不断变化的需求;2、使用最有效算法;3、是否存在内存泄露;4、程序模块化;5、数据、逻辑、ui的分离;
虽然自己设计的并不能满足以上的要求,基本还处于功能实现,逻辑基本疏通。跟自己的同事和主程间还有好长的一段路走。
首先自己设计邮箱系统有以下模块:收件列表,写信,每封信件详细信息(分个人邮件和系统邮件)。遇到的主要问题是各个层对象之间相互调用,数据使用与初始化的模块不清晰,还有就是自己在使用变量的时候犯的简单错误。下面是自己整个框架函数。通过函数说明。
<span style="font-size:18px;">---EmailLayer是自己邮件UI的主类,主要在里面通过九宫格构建背景和版面,并生成了写信,收信,邮件列表和设置裁剪区(专供邮件列表使用) function EmailLayer:__init() --只做裁剪 --生成收件箱详细 --生成写信详细 --生成系统收件箱详细 --信件列表 -- --获取新之未读邮件 --触摸后更新 --触摸区域 Layer.SetFullScreenTouch(self) end</span>
<span style="font-size:18px;"> --获取下载列表 function EmailLayer.GetDownLoadResList(layer_data,msg_data) end --打开面板需要申请的网络数据 function EmailLayer.RequestNetWorkMsg() end --信件列表层它继承了EmailLayer,这里主要对列表的触摸动作进行监听 function EmailListLayer:__init(parent) --裁剪区触摸操作 --按下 end --信件列表更新,通过Refresh()把服务器端发来存在全局变量里的数据在这里处理。并把每一项的数据放在EmailItemLayer,这样便已在每一项上进行操作。 function EmailListLayer:Refresh() --存放服务端发来的信件列表信息 --邮件列表索引 end --收件箱每项 EmailItemLayer = EmailItemLayer or BaseClass(Layer) --把EmailListLayer获取的每一项信息添加到左边的邮件类表 function EmailItemLayer:__init(parent, index, email_status, email_type, email_title, timestamp, sender) Layer.__init(self) --显示邮件类型 --显示系统邮件 end --写信详细,生成写信的版面,通过EmailLayer 生成的写信按钮调用callback函数,来切换到写信版面 EmailWriteLayer = EmailWriteLayer or BaseClass(Layer) function EmailWriteLayer:__init() end function EmailWriteLayer:Refresh() end --物品,主要是显示邮件列表里面每一封信的详细内容是否有附件,有附件的用这个类去处理 EmailGoodsItemLayer = EmailGoodsItemLayer or BaseClass(Layer) function EmailGoodsItemLayer:__init(item_id,item_num) end --系统收件箱详细,把邮件列表里的系统邮件通过触摸点击来调用,并把详细信息显示 EmailSystemDetailLayer = EmailSystemDetailLayer or BaseClass(Layer) --初始化显示系统邮件信息的UI function EmailSystemDetailLayer:__init() end --设置详细信息 --通过Refresh处理从服务器获取的信息显示 function EmailSystemDetailLayer:Refresh() --显示附件物品 end --个人收件箱详细,同系统邮件一样。不过没有附件,可以有回复功能 EmailDetailLayer = EmailDetailLayer or BaseClass(Layer) function EmailDetailLayer:__init(callback) end function EmailDetailLayer:Refresh() end --对发送服务器的请求进行监听。并通过监听,控制显示UI function EmailLayer:ListenNetWorkMsg(msg_type, protocol_data) end</span>
以上就是自己邮件的模块,在这里使用到很多cocos比较常用的API(往后详细介绍)。自己的模块在数据和UI显示分离逻辑不够严谨,导致自己在调用的时候频频出现问题。并使用了全局变量为自己方便控制。以后要往模块化的方向去写,设计更多的模块,方便自己管理和减少程序运行BUG。在编写的时候,把自己的需求分析清楚,不急于编写。下一个任务已经出来了,有开始新的启程
相关文章推荐
- 水池问题的lua语言算法(面试题分析:我的Twitter技术面试失败了)
- 水池问题的lua语言算法(面试题分析:我的Twitter技术面试失败了)
- lua进阶4--lua闭包
- LUANMA
- [置顶] lua 进阶3--lua文件中调用C++函数
- lua 进阶3--lua文件中调用C++函数
- Lua 学习笔记 (1)
- lua --- MAC 上搭建lua
- lua连接数据库之luasql ------ luasql连接mysql数据库 及 luasql源码编译
- lua源码到c的简单转换
- (字符串的处理4.7.22)POJ 3337 Expression Evaluator(解析C风格的字符串)
- (字符串的处理4.7.22)POJ 3337 Expression Evaluator(解析C风格的字符串)
- Lua 实现倒计时功能
- 《Lua游戏开发实践指南》读后感
- lua string 库
- Lua游戏开发参考资料收集
- 探索Lua5.2内部实现:Garbage Collection
- 探索Lua5.2内部实现:Garbage Collection
- UVa 327 Evaluating Simple C Expressions (模拟)
- luasocket