houmee实习日记22-30<1>

----1

首先open的cocosstudio 打开UI编辑器,在画布列表里面新建画布,命名为:RankingList

(至于ui编辑器的使用百度一下吧) 可以参考下这:http://www.tuicool.com/articles/mIvyqi

编辑器里长这样的:

houmee实习日记22-30<1>_第1张图片

然后我们看看效果图:

houmee实习日记22-30<1>_第2张图片

基本添加的过程,层机构参考下图

houmee实习日记22-30<1>_第3张图片

panel代表容器层,(不懂的回到上面百度),slider表示滑动条,button按钮,listview滚动层,Label文本层

基本工作准备好,那现在用代码来实现这个界面,并且用代码添加按钮,文本,以及对各个控件的控制的实现

这里采用MVC的模式,创建3个文件来管理分别为

rankingList_ui ,(V界面)

rankingList_ctl,(C控制器 )

rankingList_data,(M数据存放)

上代码.lua

--rankingList_data
--排行榜数据管理系统data_mgr
--created by gun on 2015-4-22

--排行榜配置项--获取cocos studio json数据

module(...,package.seeall)

-- 迭代器
local  fistNum = 0
local  gidtor = function ( ) 
	fistNum = fistNum + 1
	return fistNum
end


--------#define------
GRADE = gidtor() --等级
RANKS = gidtor() --队伍
A_COPY_OF_THE_CLEARANCE = gidtor() -- 副本通关   --3
COMPETITIVE = gidtor() --竞技
CARD  = gidtor() --卡牌
WEEK_BOSS = gidtor() --周常BOSS   --6
WORLD_BOSS = gidtor() --世界BOSS
ASSOCIATION = gidtor() --公会 
WAR_ASSOCIATION = gidtor() --公会战  --9
-----
-- A_RANKING = gidtor() --一击排名
-- INTEGRAL_RANKING = gidtor() --积分排名

-- MAKE_SURE = gidtor() --确定

---------------对应上面,在json中获取button----

gRankingListUIConfig = {  
    [GRADE] = {btnName = "等级"},
    [RANKS] = {btnName = "队伍"},
    [A_COPY_OF_THE_CLEARANCE] = {btnName = "副本通关"},
    [COMPETITIVE] = {btnName = "竞技"},
    [CARD] = {btnName = "卡牌"},
    [WEEK_BOSS] = {btnName = "周常BOSS"},
    [WORLD_BOSS] = {btnName = "世界BOSS"},
    [ASSOCIATION] = {btnName = "公会"},
    [WAR_ASSOCIATION] = {btnName = "公会战"},
    -- ---------
    -- [A_RANKING] = {btnName = "Button_oTouchSort"},
    -- [INTEGRAL_RANKING] = {btnName = "Button_jCountSort", rootFile = gRes_CSUIPath .. "/RankingList.json"},
    -- [MAKE_SURE] = {btnName = "Button_sure", rootFile = gRes_CSUIPath.. "/RankingList.json"},
}

-------------------基类------

RankingListData = class("RankingListData",BaseClass)

function  RankingListData:ctor( ... )        --相当于java中的构造方法,用来初始化参数
	self.rObjList = nil
	self.rShowTable ={}
	self.currentPage = nil               
end

gRankingListData = RankingListData:new()     --RankingListData类的一个新对象gRankingListData

function RankingListData:Init(  )            --类似的响应方法,都是调出同一个listView
    self.rObjList = { --  1.....{self.IsShowSameView} 
    [GRADE] = self.IsShowSameView ,
    [RANKS] = self.IsShowSameView ,
    [A_COPY_OF_THE_CLEARANCE] = self.IsShowSameView ,
    [COMPETITIVE] = self.IsShowSameView ,
    [CARD] = self.IsShowSameView ,
    [WEEK_BOSS] = self.IsShowSameView ,
    [WORLD_BOSS] = self.IsShowSameView ,
    [ASSOCIATION] = self.IsShowSameView ,
    [WAR_ASSOCIATION] = self.IsShowSameView ,
    ---------点击按钮判断开启排行榜情况------------
     
    }
    self.rShowTable = {}                     --对rObjList遍历,然后对值进行判断,存在则按增序添加到rShowTable里
    for i,v in ipairs(self.rObjList) do
    	if v(self) then
    		table.insert(self.rShowTable,i)  --rShowTable{1,2,3,4,5,6,7,8,9,10,11,12}
    	end
    end		
end

---界面是否显示--
-- function RankingListData:GetNothing(  )
-- 	return false
-- end

-- function RankingListData:GetShow(  )
-- 	return true
-- end

---如果上面没有初始化,在这里初始化---
function RankingListData:GetShowTable(  )
	print(">>>GetShowTable")
	if not self.rObjList then
		self.Init()
	end
	print_table(self.rShowTable)
	return self.rShowTable	
end

function RankingListData:GetDataByIndex( nPage )
	
	return {}   --返回一个表
end

-- ---???
-- GRADE = gidtor() --等级   --1
-- RANKS = gidtor() --队伍   --2
-- A_COPY_OF_THE_CLEARANCE = gidtor() -- 副本通关   --3
-- COMPETITIVE = gidtor() --竞技  --4
-- CARD  = gidtor() --卡牌   --5
-- WEEK_BOSS = gidtor() --周常BOSS   --6
-- WORLD_BOSS = gidtor() --世界BOSS --7
-- ASSOCIATION = gidtor() --公会    --8
-- WAR_ASSOCIATION = gidtor() --公会战  --9
function RankingListData:IsShowSameView( )
	-- if gidtor() == 1 then return  1 end-- 
	-- print("->>")
	-- if gidtor() == 2 then return  1 end-- 
 --    if gidtor() == 3 then return  1 end-- 
 --    if gidtor() == 4 then return  1 end-- 
 --    if gidtor() == 5 then return  1 end-- 
 --    if gidtor() == 6 then return  1 end-- 
 --    if gidtor() == 7 then return  1 end-- 
 --    if gidtor() == 8 then return  1 end-- 
 --    if gidtor() == 9 then return  1 end--
       return true
end
--等UI弄好--
------------------------------------
---这上面的判断由下面data_mgr提供---
------------------------------------

RankingListDataMgr = class("RankingListDataMgr",BaseClass)

function RankingListDataMgr:ctor( ... )  --第二个基类的构造函数,初始化参数
	self.rObjList = nil
	self.currentPage = nil
end

gRankingListDataMgr = RankingListDataMgr:new() --新对象2

-----调用上面的getshowtable()来init-----
function RankingListDataMgr:Init(  )
	--rShowTable{1,2,3,4,5,6,7,8,9,10,11,12}
	local  tabList = gRankingListData:GetShowTable()  --用对象1来调用getshowtable方法
	self.rObjList = {}
	for i,v in ipairs(tabList) do
	    table.insert(self.rObjList,{id = v,obj = gRankingListUIConfig[v]}) --重新插入后的把值当作KEY,json只作为value
	end    	
end

---如果上面没有初始化,在这里初始化---
function RankingListDataMgr:GetInitConfig(  )
	--
    if not self.rObjList then
    	self.Init()
    end
    return self.rObjList	
end

--rankingList_ui
----------->>>请看houmee实习日记22-30<2>


你可能感兴趣的:(UI,--lua--游戏排行榜界面,cocosstudio,cocos2dx-2.23)