----1
首先open的cocosstudio 打开UI编辑器,在画布列表里面新建画布,命名为:RankingList
(至于ui编辑器的使用百度一下吧) 可以参考下这:http://www.tuicool.com/articles/mIvyqi
编辑器里长这样的:
然后我们看看效果图:
基本添加的过程,层机构参考下图
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>