当前位置 : 主页 > 手机开发 > 其它 >

cocos-lua3.17 Lua tablrView工具类

来源:互联网 收集:自由互联 发布时间:2021-06-13
local MyTableView = class("MyTableView") MyTableView.__index = MyTableView MyTableView.property = {} --这里是为了让layer能调用MyTableView的方法 function MyTableView.extend(target) local t = tolua.getpeer(target) if not t then t
local MyTableView = class("MyTableView") MyTableView.__index = MyTableView

MyTableView.property = {}
--这里是为了让layer能调用MyTableView的方法 function MyTableView.extend(target) local t = tolua.getpeer(target) if not t then t = {} tolua.setpeer(target, t) end setmetatable(t, MyTableView) return target end
--滚动事件 function MyTableView.scrollViewDidScroll(view) --print("滚动事件") end
function MyTableView.scrollViewDidZoom(view) print("scrollViewDidZoom") end
--cell点击事件 function MyTableView.tableCellTouched(table,cell) print("点击了cell:" .. cell:getIdx()) end
--cell的大小,注册事件就能直接影响界面,不需要主动调用 function MyTableView.cellSizeForTable(table,idx) return MyTableView.property.cellSize or cc.p(150,150) end
--显示出可视部分的界面,出了裁剪区域的cell就会被复用 function MyTableView.tableCellAtIndex(table, idx) local strValue = string.format("%d",idx) print("数据加载"..strValue) local cell = table:dequeueCell() local label = nil if nil == cell then print("创建了新的cell") cell = cc.TableViewCell:new()
--添加cell内容 label = cc.Label:createWithSystemFont(strValue, "Helvetica", 40) label:setPosition(cc.p(0,0)) label:setAnchorPoint(cc.p(0,0)) label:setColor(cc.c3b(255,0,0)) label:setTag(123) cell:addChild(label) else print("使用已经创建过的cell") label = cell:getChildByTag(123) if nil ~= label then label:setString(strValue) end end
return cell end
--设置cell个数,注册就能生效,不用主动调用 function MyTableView.numberOfCellsInTableView(table) return MyTableView.property.cellNum or 100 end
function MyTableView:init()
local winSize = cc.Director:getInstance():getWinSize() if MyTableView.property.HORIZONTAL then --创建TableView TableSize = MyTableView.property.TableSize or cc.size(600,200) local tableView = cc.TableView:create(TableSize) --设置滚动方向 水平滚动 tableView:setDirection(cc.SCROLLVIEW_DIRECTION_HORIZONTAL) tableView:setPosition(cc.p(20, winSize.height / 2 - 150)) tableView:setDelegate() self:addChild(tableView) --registerScriptHandler functions must be before the reloadData funtion
--cell个数 tableView:registerScriptHandler(MyTableView.numberOfCellsInTableView,cc.NUMBER_OF_CELLS_IN_TABLEVIEW) --滚动事件 tableView:registerScriptHandler(MyTableView.scrollViewDidScroll,cc.SCROLLVIEW_SCRIPT_SCROLL) tableView:registerScriptHandler(MyTableView.scrollViewDidZoom,cc.SCROLLVIEW_SCRIPT_ZOOM) --cell点击事件 tableView:registerScriptHandler(MyTableView.tableCellTouched,cc.TABLECELL_TOUCHED) --cell尺寸、大小 tableView:registerScriptHandler(MyTableView.cellSizeForTable,cc.TABLECELL_SIZE_FOR_INDEX) --显示出可视部分的cell tableView:registerScriptHandler(MyTableView.tableCellAtIndex,cc.TABLECELL_SIZE_AT_INDEX) --调用这个才会显示界面 tableView:reloadData() else ----------------------------------------------------------- --跟上面差不多,这里是创建一个“垂直滚动”的TableView TableSize = MyTableView.property.TableSize or cc.size(600,200) local tableView = cc.TableView:create(TableSize) tableView:setDirection(cc.SCROLLVIEW_DIRECTION_VERTICAL) tableView:setPosition(cc.p(winSize.width - 150, winSize.height / 2 - 150)) tableView:setDelegate() tableView:setVerticalFillOrder(cc.TABLEVIEW_FILL_TOPDOWN) self:addChild(tableView) tableView:registerScriptHandler(MyTableView.scrollViewDidScroll,cc.SCROLLVIEW_SCRIPT_SCROLL) tableView:registerScriptHandler(MyTableView.scrollViewDidZoom,cc.SCROLLVIEW_SCRIPT_ZOOM) tableView:registerScriptHandler(MyTableView.tableCellTouched,cc.TABLECELL_TOUCHED) tableView:registerScriptHandler(MyTableView.cellSizeForTable,cc.TABLECELL_SIZE_FOR_INDEX) tableView:registerScriptHandler(MyTableView.tableCellAtIndex,cc.TABLECELL_SIZE_AT_INDEX) tableView:registerScriptHandler(MyTableView.numberOfCellsInTableView,cc.NUMBER_OF_CELLS_IN_TABLEVIEW) tableView:reloadData() end
return true end
--这里是为了让layer能调用MyTableView的方法 --这里的四个属性 -- cellSize -- cellNum -- HORIZONTAL -- TableSize function MyTableView.create(args) MyTableView.property = args local layer = MyTableView.extend(cc.Layer:create()) if nil ~= layer then layer:init() end
return layer end

return MyTableView
网友评论