本来是想看看网上的教程文章,结果看了好几篇,复制代码各种报错,有很多不存在的类和变量,根本用不了。

所以干脆自己去看官方demo,经过自己分析测试,已经大概会用了,顺便记录一下。

以下是代码,复制粘贴就能运行的那种!(图片资源自备)

新建  tableviewTest.lua,把下面的代码复制进去,保存为utf8格式。在需要的地方(比如main()函数里)调用 require("tableviewTest")

local TableViewTestLayer = class("TableViewTestLayer")
TableViewTestLayer.__index = TableViewTestLayer--这里是为了让layer能调用TableViewTestLayer的方法
function TableViewTestLayer.extend(target)local t = tolua.getpeer(target)if not t thent = {}tolua.setpeer(target, t)endsetmetatable(t, TableViewTestLayer)return target
end--滚动事件
function TableViewTestLayer.scrollViewDidScroll(view)--print("滚动事件")
endfunction TableViewTestLayer.scrollViewDidZoom(view)print("scrollViewDidZoom")
end--cell点击事件
function TableViewTestLayer.tableCellTouched(table,cell)print("点击了cell:" .. cell:getIdx())
end--cell的大小,注册事件就能直接影响界面,不需要主动调用
function TableViewTestLayer.cellSizeForTable(table,idx) return 150,150
end--显示出可视部分的界面,出了裁剪区域的cell就会被复用
function TableViewTestLayer.tableCellAtIndex(table, idx)local strValue = string.format("%d",idx)print("数据加载"..strValue)local cell = table:dequeueCell()local label = nilif nil == cell thenprint("创建了新的cell")cell = cc.TableViewCell:new()--添加cell内容local sprite = cc.Sprite:create("res/tablecell.png")sprite:setAnchorPoint(cc.p(0,0))sprite:setPosition(cc.p(0, 0))cell:addChild(sprite)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)elseprint("使用已经创建过的cell")label = cell:getChildByTag(123)if nil ~= label thenlabel:setString(strValue)endendreturn cell
end--设置cell个数,注册就能生效,不用主动调用
function TableViewTestLayer.numberOfCellsInTableView(table)return 100
endfunction TableViewTestLayer:init()local winSize = cc.Director:getInstance():getWinSize()--创建TableViewlocal tableView = cc.TableView:create(cc.size(600,200))--设置滚动方向  水平滚动
    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--注册脚本编写器函数必须在reloadData函数之前(有道自动翻译)--cell个数
    tableView:registerScriptHandler(TableViewTestLayer.numberOfCellsInTableView,cc.NUMBER_OF_CELLS_IN_TABLEVIEW)  --滚动事件
    tableView:registerScriptHandler(TableViewTestLayer.scrollViewDidScroll,cc.SCROLLVIEW_SCRIPT_SCROLL)tableView:registerScriptHandler(TableViewTestLayer.scrollViewDidZoom,cc.SCROLLVIEW_SCRIPT_ZOOM)--cell点击事件
    tableView:registerScriptHandler(TableViewTestLayer.tableCellTouched,cc.TABLECELL_TOUCHED)--cell尺寸、大小
    tableView:registerScriptHandler(TableViewTestLayer.cellSizeForTable,cc.TABLECELL_SIZE_FOR_INDEX)--显示出可视部分的cell
    tableView:registerScriptHandler(TableViewTestLayer.tableCellAtIndex,cc.TABLECELL_SIZE_AT_INDEX)--调用这个才会显示界面
    tableView:reloadData()-------------------------------------------------------------跟上面差不多,这里是创建一个“垂直滚动”的TableViewtableView = cc.TableView:create(cc.size(200, 350))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(TableViewTestLayer.scrollViewDidScroll,cc.SCROLLVIEW_SCRIPT_SCROLL)tableView:registerScriptHandler(TableViewTestLayer.scrollViewDidZoom,cc.SCROLLVIEW_SCRIPT_ZOOM)tableView:registerScriptHandler(TableViewTestLayer.tableCellTouched,cc.TABLECELL_TOUCHED)tableView:registerScriptHandler(TableViewTestLayer.cellSizeForTable,cc.TABLECELL_SIZE_FOR_INDEX)tableView:registerScriptHandler(TableViewTestLayer.tableCellAtIndex,cc.TABLECELL_SIZE_AT_INDEX)tableView:registerScriptHandler(TableViewTestLayer.numberOfCellsInTableView,cc.NUMBER_OF_CELLS_IN_TABLEVIEW)tableView:reloadData()return true
end--这里是为了让layer能调用TableViewTestLayer的方法
function TableViewTestLayer.create()local layer = TableViewTestLayer.extend(cc.Layer:create())if nil ~= layer thenlayer:init()endreturn layer
end--运行测试场景
function runTableViewTest()local newScene = cc.Scene:create()local newLayer = TableViewTestLayer.create()newScene:addChild(newLayer)cc.Director:getInstance():replaceScene(newScene)--return newScene
endrunTableViewTest()return TableViewTestLayer

转载于:https://www.cnblogs.com/mingfuqishi/p/9284482.html

(原创)cocos2dx-lua TableView官方demo分析相关推荐

  1. 【Android Camera1】Camera1初始化销毁流程(一) —— 官方Demo初始化流程分析

    Camera1初始化流程 一.摘要 二.Camera1 Demo分析 2.1 变量解析 2.2 构造函数 setUpPreview() adjustCameraParameters() 2.3 Sta ...

  2. Cocos2d-x 手游聊天系统Demo实现(Lua实现)

    Cocos2d-x 手游聊天系统Demo实现 转载请注明:IT_xiao小巫 本篇博客给大家分享的是一个手游聊天系统,笔者也是第一次使用Cocos2d-x来实现这样一个模块,其中有很多不清楚不明白的地 ...

  3. Camera2 Google官方demo android-Camera2Basic分析

    最近一段时间在学习Camera2,记录一下. 官方demo demo很简单,CameraActivity中加入了一个fragment,AutoFitTextureView提供了一个方法用来设置text ...

  4. Qt5官方demo分析集29——Extending QML - Property Value Source Example

    此系列的所有文章都可以在这里查看http://blog.csdn.net/cloud_castle/article/category/2123873 接上文Qt5官方demo解析集28--Extend ...

  5. cocos2d-x lua 学习笔记(1) -- 环境结构

    Cocos2d-x 3.0超过环境的版本号来建立和前Cocos2d-x 2.0 差异较大的版本,从同时Cocos2d-x 3.0项目打包成apkAndroid的应用程序文件,步骤,构建环境有些乏味安德 ...

  6. gRPC学习记录(四)--官方Demo

    了解proto3后,接下来看官方Demo作为训练,这里建议看一遍之后自己动手搭建出来,一方面巩固之前的知识,一方面是对整个流程更加熟悉. 官方Demo地址: https://github.com/gr ...

  7. grpc简单使用 java_gRPC学习记录(四)-官方Demo - Java 技术驿站-Java 技术驿站

    了解proto3后,接下来看官方Demo作为训练,这里建议看一遍之后自己动手搭建出来,一方面巩固之前的知识,一方面是对整个流程更加熟悉. 官方Demo地址: https://github.com/gr ...

  8. cocos2d-x+lua开发模式下编辑器的选择

    cocos2d-x+lua开发模式下编辑器的选择 原本打算直接用CocosIDE的,毕竟是官方出品,并且支持Android远程调试,windows下的调试也非常方便,调试的信息也非常全,智能提示也不错 ...

  9. mysql注入 xfkxfk_WSS最新版多处SQL注入直接获取数据三(官方demo演示及快速定位漏洞技巧)...

    ### 简要描述: WSS最新版多处SQL注入直接获取数据三,官方demo演示,这里存在多处,对同一问题进行总结 ### 详细说明: WSS最新版1.3.2,这里存在多处,并对此同一问题进行总结,以及 ...

最新文章

  1. deepfakes怎么用_如何使用 Deepfakes 换脸
  2. 计算机——工科中的理科
  3. Python测试框架pytest(02)PyCharm设置运行pytest、pytest.main()
  4. Java 8 vs. Scala之Lambda表达式
  5. centos 7.x systemd service 配置方法整理
  6. mybatis中,collection配置后查询只显示一条记录
  7. C++ primer 笔记(二)
  8. Formik官方应用案例解析(三)使用react-select
  9. linux系统的课程实践,“Linux操作系统与应用”课程教学与实践
  10. 江西科技师范大学泰豪校区计算机专业,扎心了!比取经还艰难的大学路,南昌居然占了这么多……...
  11. teamviewer远程控制工具
  12. c++基础题:判断奇偶数
  13. 应用程序正常初始化(0xc00000005)失败.请单击“单击”,终止应用程序
  14. ODX介绍(2)[ DiagLayerStructure]
  15. 【深度学习】计算机视觉(二)——认识和基础(下)
  16. 前端基础知识(grid布局)
  17. 解决懒惰、拖延的方法
  18. Android电视开发,Mstar_828平台信号源画面比例调节调用流程
  19. 软件开发中如何理解人机料法环
  20. 解密蓝牙防丢器工作原理,让您避免遗失物品

热门文章

  1. mybatis_基础篇
  2. SVD java 算法实现
  3. java基础 - file类(递归遍历目录)
  4. linux系统常用快捷键,文件类型,后缀名,语言修改,转义
  5. 淘宝网商品库优化实践访谈
  6. 细节决定成败:一个公共类库
  7. 巧用Excel 轻松转换人民币大小写
  8. 万字长文让你看够幂级数
  9. Vue 脚手架生成的项目结构分析||Vue 脚手架的自定义配置
  10. 组件间数据交互——父组件向子组件传值( props属性值类型) 子组件向父组件传值-携带参数 || 非父子组件间传值