【quick-cocos2d-lua】 登录系统

  

各模块组成如下,layers放UI界面文件,logic放逻辑处理文件,这样界面跟逻辑分开方便各自独立处理。service下的Net可以用来接收客户端发的消息,再发给服务器,而eventManager是负责把服务器返回的消息分发给modules下相应的模块。 modules用于放各个模块,如登录、商店等,用来接收eventManager分发来自服务器返回的消息。share下放一些要多处用到的数据文件,如个人信息在不同场景和layer中都要用到。

 

注册流程如下,登录与该流程一样,有些细节不一样而已。

 

部分代码解析:

1,eventManager.lua如何将服务器返回的消息分发给对应的消息模块,并调用该模块对应的函数:

如下,首先将各模块注册到eventManager.lua的modules 中,当服务器有消息发给eventManager时,eventManager就凭消息ID在modules中各模块找,如果可以通过该消息ID找到一个函数,则调用这个函数,即用来接收来自服务器返回的消息进而处理消息。

local eventManager = class("eventManager")

local modules = {}

function eventManager:dispatch(msg)
	local id = msg.id
	for _,m in pairs(modules) do
		local events = m.events
		local functionName = events[id]
		if functionName then
			m[functionName](m,msg)
			break
		end
	end
end


function eventManager:registerModuleMsg(m)
	table.insert(modules,m)
end

return eventManager

 

2,如何在eventManager.lua中注册各消息模块:

因为不同的消息需要不同的函数处理,所以需要消息ID和处理函数一一对应起来,可以在模块内写上消息ID与对应函数的关系,如下,然后调用eventManager的registerModuleMsg,则将该模块注册到eventManager中。

local login = class("login")

function login:ctor()
	self.events=
	{
		[100]="RegisterRet",
		[101]="LoginRet",
	}
	eventManager:registerModuleMsg(self)
end

function login:RegisterRet(ret)
	--处理服务器返回的注册消息
end

function login:LoginRet(ret)
  --返回服务器返回的登录消息
end

return login

 

3.如何创建历史登录账号记录的下拉菜单:

下单菜单是一个listview,每一个登录过的账号就是Item,多少个账号记录就有多少个item。首先要有账号记录的数据,在每次登录成功后,把该账号信息保存到本地,在每次点击下拉按钮时,就会读取本地文件,把历史记录账号展示出来。item可单独写一个类,给listview添加item时,可获取一个item的对象,再进行克隆添加;如果每次添加item都需要加载Json文件,会造成运行速度慢。

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值