local MyTableView = class("MyTableView")
MyTableView.__index = MyTableView MyTableView.property = {} --这里是为了让layer能调用TableViewTestLayer的方法
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)
if MyTableView.property.cellSizeW and MyTableView.property.cellSizeH then
return MyTableView.property.cellSizeW,MyTableView.property.cellSizeH
end
return ,
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内容
-- local sprite = display.newSprite("res/apple.png")
-- sprite:setAnchorPoint(cc.p(0,0))
-- sprite:setPosition(cc.p(0, 0))
-- cell:addChild(sprite) label = cc.Label:createWithSystemFont(strValue, "Helvetica", )
label:setPosition(cc.p(,))
label:setAnchorPoint(cc.p(,))
label:setColor(cc.c3b(,,))
label:setTag()
cell:addChild(label)
else
print("使用已经创建过的cell")
label = cell:getChildByTag()
if nil ~= label then
label:setString(strValue)
end
end return cell
end --设置cell个数,注册就能生效,不用主动调用
function MyTableView.numberOfCellsInTableView(table)
if MyTableView.property.cellNum then
return MyTableView.property.cellNum
end
return
end function MyTableView:init() local visiableSize = cc.Director:getInstance():getVisibleSize()
local origin = cc.Director:getInstance():getVisibleOrigin() local winSize = cc.Director:getInstance():getWinSize() local isVERTICAL = MyTableView.property.isVERTICAL local tableSize = isVERTICAL==true and cc.size(winSize.width - ,) or cc.size(, winSize.height - )
if MyTableView.property.tableSize then
tableSize = MyTableView.property.tableSize
end
if isVERTICAL then
-----------------------------------------------------------
--创建TableView local tableView = cc.TableView:create(tableSize)
--设置滚动方向 水平滚动
tableView:setDirection(cc.SCROLLVIEW_DIRECTION_HORIZONTAL)
-- tableView:setPosition(cc.p(10, winSize.height / 2))
tableView:setDelegate()
self:addChild(tableView)
--registerScriptHandler functions must be before the reloadData funtion
--注册脚本编写器函数必须在reloadData函数之前(有道自动翻译) --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
tableView = cc.TableView:create(tableSize)
tableView:setDirection(cc.SCROLLVIEW_DIRECTION_VERTICAL)
-- tableView:setPosition(cc.p(winSize.width / 2, 10))
tableView:setDelegate()
tableView:setVerticalFillOrder(cc.TABLEVIEW_FILL_TOPDOWN)
self:addChild(tableView)
--registerScriptHandler functions must be before the reloadData funtion
--注册脚本编写器函数必须在reloadData函数之前(有道自动翻译) --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()
----------------------------------------------------------- end return true
end --这里是为了让layer能调用TableViewTestLayer的方法
function MyTableView.create(tableSize,cellSizeW,cellSizeH,cellNum,isVERTICAL)
MyTableView.property.cellSizeW = cellSizeW--Item宽度
MyTableView.property.cellSizeH = cellSizeH--Item长度
MyTableView.property.cellNum = cellNum--Item数量
MyTableView.property.isVERTICAL = isVERTICAL--true 水平滑动
MyTableView.property.tableSize = tableSize--显示区域大小 cc.size() local layer = MyTableView.extend(cc.Layer:create())
if nil ~= layer then
layer:init()
end return layer
end return MyTableView

cocos-lua3.17 Lua tablrView工具类的更多相关文章

  1. Android—关于自定义对话框的工具类

    开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...

  2. [转]Java常用工具类集合

    转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...

  3. .net使用正则表达式校验、匹配字符工具类

    开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: /// <summary> /// 字符(串)验证.匹配工具类 /// </summary> public c ...

  4. java工具类

    1.HttpUtilsHttp网络工具类,主要包括httpGet.httpPost以及http参数相关方法,以httpGet为例:static HttpResponse httpGet(HttpReq ...

  5. Android 系统工具类SystemUtils

    包含的功能有: 获取系统中所有APP应用.获取用户安装的APP应用.根据包名和Activity启动类查询应用信息.跳转到WIFI设置.WIFI网络开关.移动网络开关.GPS开关 当前若关则打开 当前若 ...

  6. App开发流程之加密工具类

    科技优家 2016-09-08 18:10 从这篇记录开始,记录的都算是干货了,都是一些编程日常的积累. 我建议先将基础的工具加入项目,后续的开发效率会呈指数增长.如果在专注功能开发过程中,才发现缺少 ...

  7. JAVA Collections工具类sort()排序方法

    主要分析内容: 一.Collections工具类两种sort()方法 二.示例 一.Collections工具类两种sort()方法 格式一: public static <T extends ...

  8. 项目实战工具类(一):PhoneUtil(手机信息相关)

    可以使用的功能: 1.获取手机系统版本号 2.获取手机型号 3.获取手机宽度 4.获取手机高度 5.获取手机imei串号 ,GSM手机的 IMEI 和 CDMA手机的 MEID. 6.获取手机sim卡 ...

  9. Android开发常用工具类

    来源于http://www.open-open.com/lib/view/open1416535785398.html 主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前 ...

随机推荐

  1. NetSec2019 20165327 EXP5 MSF基础应用

    NetSec2019 20165327 EXP5 MSF基础应用 实践目标 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如 ...

  2. Python 文件的基本操作

    打开文件的模式有: r,只读模式(默认). w,只写模式.[不可读:不存在则创建:存在则删除内容:] a,追加模式.[可读:   不存在则创建:存在则只追加内容:] "+" 表示可 ...

  3. p3966单词

    后缀自动机版本: 所有的串用(char)('z'+1)连起来,然后建自动机.再用原串在自动机上跑.跑到的位置的endpos就是出现的次数.不过内存有点大. #include <iostream& ...

  4. Git更改用户名与回退操作

    1. 更改本地用户名和邮箱 git config --global user.name "Your_username" git config --global user.email ...

  5. echarts常用方法,legend状态支持两张图片切换(四)

    在UI设计的时候,可能我们在使用echarts时,legend是用图片渲染的,未选中的legend是用置灰的图片展示的.即彩色图片,置灰图片交互切换. 主要代码如下: //图例事件 let lgdt ...

  6. mysql权限参考

    mysql日常管理和应用工作中,大家经常会涉及到授权问题,下面,我们就列举下权限相关的参考. 1.管理权限(Administrative Privileges) Privilege Name      ...

  7. RPA简介

    开篇: 公司正在全面推广RPA,正好借此机会学习一下,发现国内对RPA的了解较少,萌生了在博客园开博,同时锻炼一下自己的输出能力,纯笔记,如有不足之处,请指正,共勉. 阅读目录: 1. 什么是RPA ...

  8. SQL语句全解,非常棒!

    链接自W3school非常详细的SQL教程 http://www.w3school.com.cn/sql/index.asp

  9. 安装cmake 和 opencv 4.0.0

    1.安装cmake3.5.1或更新的版本 安装gcc-c++:sudo apt-get install build-essential (或者直接执行这两条命令sudo apt-get install ...

  10. logging 使用的一些问题

    python 脚本加载是递归加载,被引用的脚本要先与调用者脚本加载,所以不能在函数外部获取logger,否则会导致配置被错过