【quick-cocos2d-lua】 棋牌-加入房间

【quick-cocos2d-lua】 棋牌-加入房间_第1张图片

界面分析:房间号共6位,UI界面上部分是6个Label,用来显示用户输入的房间号,下面共12个按钮,其中有10个按钮数字按钮,用来输入房间号,输入的数字显示在上面的Label上,删除按钮则删除一位已输入的数字,清除则删除所有已输入的数字。当6个数字输入完时发送给服务器进行验证。

 

逻辑分析:

①首先6个label都是空的,当按一下某个按钮,第一个label就会显示按钮的数字,再按按钮,则第二个label显示数字,即按第n次时,第n个label显示数字(当n小于7时)。所以可以用一个table用来记录已输入的数字,给每个数字button添加一个响应函数,点击时,把数字加入table,如果小于7,则得到table的最后一个值,显示到label上,并判断table是否有6个数字,如果是6个的话则发消息给服务器;若大于7,则从table移除。

②删除时,获得table的长度,即label有数字的最后一位,将label清空,再将table最后一位数据移除

③清除时,把所有有数字的label清空,再将table清空。

local pressNumber = {}  --保存输入的数字
local labelNumber = {}  --6个显示数字的label

function friendNumber:btn_close()
    local btn_close = cc.uiloader:seekNodeByPath(self.ccsNode, "Panel_18/btn_close")        
 	btn_close:onButtonClicked(function()
 		pressNumber = {}
 		self:removeFromParent()
 	end)
end


--6个标签,显示输入的房间号
function friendNumber:label_Number()
	for i = 1,6 do
		local label = cc.uiloader:seekNodeByPath(self.ccsNode, "Panel_18/Label_"..i)        
 		labelNumber[i] = label
 	end
end

--数字按钮,输入房间号
function friendNumber:btn_number()
	for i = 0,9 do
		local btn_number = cc.uiloader:seekNodeByPath(self.ccsNode, "Panel_18/btn_num"..i)        
 			btn_number:onButtonClicked(function()
 			self:add_Number(i)
 		end)
 	end
end

function friendNumber:btn_delete()
	local btn_delete = cc.uiloader:seekNodeByPath(self.ccsNode, "Panel_18/btn_delete")        
		btn_delete:onButtonClicked(function()
		self:delete_Number()
	end)
end

function friendNumber:btn_clear()
	local btn_clear = cc.uiloader:seekNodeByPath(self.ccsNode, "Panel_18/btn_clear")        
		btn_clear:onButtonClicked(function()
		self:clear_Number()
	end)
end


function friendNumber:add_Number(i)	
	table.insert(pressNumber,i)
	local posIndex = table.getn(pressNumber)
	if posIndex < 7 then
		--dump(pressNumber)
		self:updateLabelNum(posIndex,i)
		self:checkNumber()
		return true
	else
		table.remove(pressNumber)
		return false
	end
end

function friendNumber:delete_Number()
	local posIndex = table.getn(pressNumber)
	if posIndex > 0  then
		self:updateLabelNum(posIndex,"")
		table.remove(pressNumber)
	end
	return 0
end

function friendNumber:clear_Number()
	local numLen = table.getn(pressNumber)
	for i = 1,numLen do
		self:updateLabelNum(i,"")
	end
	pressNumber = {}
end

function friendNumber:updateLabelNum(posIndex,num)
	local label = labelNumber[posIndex]
	label:setString(tostring(num))
end

function friendNumber:checkNumber()
	local numLen = table.getn(pressNumber)
	if 	numLen == 6 then
		print("已有6个数")
		local roomNumStr = pressNumber[1]..pressNumber[2]..pressNumber[3]..
		pressNumber[4]..pressNumber[5]..pressNumber[6]
		local roomNum = tonumber(roomNumStr)
		friendRoomHandler:checkRoomJoin(201,roomNum)
	end
end


return friendNumber

 

你可能感兴趣的:(【quick-cocos2d-lua】 棋牌-加入房间)