• TableView (cocos-2dx lua)


    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
    
    • 1
    • 2
    • 3

    cellSizeForTable方法:

    --返回cell的大小(x,y)
    function cellSizeForTable(table,idx)
    	--return x,y
    	return 50,50 	--设置cell大小为50*50
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    numberOfCellsInTableView方法:

    --返回你想要设置cell的数量
    function numberOfCellsInTableView()
    	--return num
    	return 10	--设置10个cell
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5

    note

    1.程序运行后需要先调用reloadData载入TableView,TableView会触发事件生成好所有的cell,滑动的时候再把对应的cell显示出来。
    2.如果第一次运行程序的时候发现没有图像呈现,但滑动TableView之后出现,表示没有初始化TableView,注意调用reloadData的位置(调用时间晚了)
    3.cell的坐标位置是相对tableView的位置,cell不设置位置默认为相对tableView位置坐标(0,0)(建议不为cell设置位置,可能会出现边缘cell显示不完全的问题)

  • 相关阅读:
    七大排序 (9000字详解直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序)
    界面控件DevExpress WinForms 2024产品路线图预览(一)
    百分点科技受邀参加“一带一路”国际合作高峰论坛
    基于机智云物联网平台与4G DTU远程车库门
    【QT】设置焦点及光标位置
    HTML,CSS实现鼠标划过头像,头像突出变大(附源码)
    功能测试与性能测试的区别是什么?
    一种面向后端的微服务低代码平台架构设计
    性能测试持续集成 CICD:JMeter+Jenkins+Ant+jmx
    客户端架构
  • 原文地址:https://blog.csdn.net/weixin_43735634/article/details/126257692