TableView是Cocos-2dx一个实现滑动功能的控件。比如好友列表,可以上下滑动。TableView中的元素叫cell(被滑动的那些对象),每个cell有唯一的idx。
常用方法:
1.creat(cc.size(x,y))
创建一个TableView,参数代表TableView大小,返回一个TableView对象
例:local tableView = cc.TableView:creat(cc.size(500,600)) --得到一个500*600的TableView
2.setDirection(cc.SCROLLVIEW_DIRECTION_HORIZONTAL) --横向滑动
设置滑动方向, HORIZONTAL:横向滑动 VERTICAL:纵向滑动
例:tableView:setDirection(cc.SCROLLVIEW_DIRECTION_HORIZONTAL) --将tableView设置成横向滑动
3.setPosition(cc.p(x,y))
设置位置
例:tableView:setPosition(cc.p(10,20)) --设置tableView坐标为(10,20)
4.setDelegate()
设置事件
例:tableView:setDelegate() --设置tableView可以出发触发事件
5.setVerticalFillOrder(cc.TABLEVIEW_FILL_TOPDOWN)
设置TableView中呈现元素的idx排列方式,TOP_DOWN:idx序号从小到大 BOTTOM_UP:idx序号从大到小
例:tableView:setVerticalFillOrder(cc.TABLEVIEW_FILL_TOPDOWN) --将tableView中tableCellAtIndex事件中的idx序号设置为从小到大
6.reloadData()
重新加载,在TableView初始化或者修改之后需要调用该方法重新加载TableView
例:tableView:reloadData() --重新加载tableView
常用相关事件
1.tableView:registerScriptHandler(tableCellTouched,cc.TABLECELL_TOUCHED)
触碰事件,当触碰(点击)到tableView时会调用tableCellTouched方法
2.tableView:registerScriptHandler(cellSizeForTable, cc.TABLECELL_SIZE_FOR_INDEX);
调用cellSizeForTable方法,设置需要创建cell的尺寸
3.tableView:registerScriptHandler(tableCellAtIndex, cc.TABLECELL_SIZE_AT_INDEX);
调用tableCellAtIndex方法,控制cell的生成
4.tableView:registerScriptHandler(numberOfCellsInTableView, cc.NUMBER_OF_CELLS_IN_TABLEVIEW);
调用numberOfCellsInTableView方法,返回tableView需要生成的cell数量
tableCellTouched方法:
function tableCellTouched(view,cell)
print("当触碰(点击)到tableView时会调用这个方法方法")
end
cellSizeForTable方法:
--返回cell的大小(x,y)
function cellSizeForTable(table,idx)
--return x,y
return 50,50 --设置cell大小为50*50
end
tableCellAtIndex方法:
function tableCellAtIndex(table,idx)
--设置cell
--TableView会调用这个方法10次,idx从0到9(因为设置了要生成10个cell,因为设置了idx从小到大)
--假设对象资源信息在self.list中
local cell = table:dequeueCell() --获取当前cell
if cell == nil then --如果cell不存在,创建一个新的。当第一次调用该方法时会出现这种情况(idx为0的时候)
cell = cc.TableViewCell:new()
end
local item=cell:getChildByTag(1) --获得cell的子节点(我们需要显示的资源对象)
if not item then --如果cell没有子节点,新建一个资源对象,设置tag,并把该对象加入到cell的子节点。当第一次调用该方法时会出现这种情况(idx为0的时候)
item = cc.item:create(self.list[idx+1]) --用self.list资源创建一个新对象,(创建对象的方式根据对象选择)
item:setTag(1)
cell:addChild(item)
end
if item then --cell有子节点,更新子节点信息(当第一次创建cell之后,不需要在额外创建新的cell和item,只需要更新item信息即可)
item = cc.item:creat(self.list[idx+1])
end
return cell --返回一个cell
end
numberOfCellsInTableView方法:
--返回你想要设置cell的数量
function numberOfCellsInTableView()
--return num
return 10 --设置10个cell
end
1.程序运行后需要先调用reloadData载入TableView,TableView会触发事件生成好所有的cell,滑动的时候再把对应的cell显示出来。
2.如果第一次运行程序的时候发现没有图像呈现,但滑动TableView之后出现,表示没有初始化TableView,注意调用reloadData的位置(调用时间晚了)
3.cell的坐标位置是相对tableView的位置,cell不设置位置默认为相对tableView位置坐标(0,0)(建议不为cell设置位置,可能会出现边缘cell显示不完全的问题)