您的位置:首页 > 编程语言 > Lua

程序设计之LUA设计邮件系统

2013-11-01 19:57 525 查看
今天通过一周多的时间,把邮件系统提交了。但是还没测,还有很多细节需要继续修改。

自己程序设计的原则: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。在编写的时候,把自己的需求分析清楚,不急于编写。下一个任务已经出来了,有开始新的启程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: