Quick-Lua TabelView的简单使用

来源:互联网 发布:diana krall 知乎 编辑:程序博客网 时间:2024/05/19 06:37


今天主要提供一个tableview的Demo,


这个demo我放到github上,先把代码贴出来,创建个quick-lua工程:


MainScene.lua

local MainScene = class("MainScene", function()    return display.newScene("MainScene")end)require("app.scenes.tabelView")function MainScene:ctor()    ui.newTTFLabel({text = "Hello, World", size = 64, align = ui.TEXT_ALIGN_CENTER})        :pos(display.cx, display.cy)        :addTo(self)endfunction MainScene:onEnter()    if device.platform == "android" then        -- avoid unmeant back        self:performWithDelay(function()            -- keypad layer, for android            local layer = display.newLayer()            layer:addKeypadEventListener(function(event)                if event == "back" then app.exit() end            end)            self:addChild(layer)            layer:setKeypadEnabled(true)        end, 0.5)    end    setCellCount(6)    self:addChild( create() )endfunction MainScene:onExit()endreturn MainScene


tableView.lua

---- Author: yangkai-- E-mail: yk81708090@163.com-- Date: 2014-04-04 11:06:28--local TableViewLayer = class("TableViewLayer")TableViewLayer.__index = TableViewLayerlocal count = 0  -- 获取箱子数量function TableViewLayer.extend(target)    local t = tolua.getpeer(target)    if not t then        t = {}        tolua.setpeer(target, t)    end    setmetatable(t, TableViewLayer)    return targetendfunction TableViewLayer.scrollViewDidScroll(view)    print("scrollViewDidScroll")endfunction TableViewLayer.scrollViewDidZoom(view)    print("scrollViewDidZoom")endfunction TableViewLayer.tableCellTouched(table,cell)    print("cell touched at index: " .. cell:getIdx())    --[[此处可以通过再定义一个变量用来保存当前的使用几个箱子, 在根据cell:getIdx()的数值做比较即可判断当前是否点击到    ]]endfunction TableViewLayer.cellSizeForTable(table,idx)    return 96,94endfunction TableViewLayer.tableCellAtIndex(table, idx)    local strValue = string.format("%d",idx)    local cell = table:dequeueCell()    local label = nil    if nil == cell then        cell = CCTableViewCell:new()        local sprite = CCSprite:create("sc_wp_box_tianjia_n.png")        sprite:setAnchorPoint(CCPointMake(0,0))        sprite:setPosition(CCPointMake(0, 0))        cell:addChild(sprite)        label = CCLabelTTF:create(strValue, "Helvetica", 20.0)        label:setPosition(CCPointMake(0,0))        label:setAnchorPoint(CCPointMake(0,0))        label:setTag(123)        cell:addChild(label)    else        label = tolua.cast(cell:getChildByTag(123),"CCLabelTTF")        if nil ~= label then            label:setString(strValue)        end    end    return cellendfunction TableViewLayer.numberOfCellsInTableView(table)   -- 获取数据   return countend-- 初始化tabelviewfunction TableViewLayer:init()    local winSize = CCDirector:sharedDirector():getWinSize()    local tableView = CCTableView:create(CCSizeMake(565, 127)) -- 设置大小    tableView:setDirection(kCCScrollViewDirectionHorizontal)-- 设置横向    tableView:setAnchorPoint(ccp(0.5, 0.5))    tableView:setPosition(ccp(display.cx - 282.5, display.cy-325))-- 设置位置    tableView:setVerticalFillOrder(kCCTableViewFillTopDown)-- 设置滑动方向    self:addChild(tableView)    -- 添加注册事件    tableView:registerScriptHandler(TableViewLayer.scrollViewDidScroll,CCTableView.kTableViewScroll)    tableView:registerScriptHandler(TableViewLayer.scrollViewDidZoom,CCTableView.kTableViewZoom)    tableView:registerScriptHandler(TableViewLayer.tableCellTouched,CCTableView.kTableCellTouched)    tableView:registerScriptHandler(TableViewLayer.cellSizeForTable,CCTableView.kTableCellSizeForIndex)    tableView:registerScriptHandler(TableViewLayer.tableCellAtIndex,CCTableView.kTableCellSizeAtIndex)    tableView:registerScriptHandler(TableViewLayer.numberOfCellsInTableView,CCTableView.kNumberOfCellsInTableView)    tableView:reloadData() -- 刷新数据        return trueendfunction setCellCount(icount)count = icountendfunction create()    local layer = TableViewLayer.extend(CCLayer:create())    if nil ~= layer then        layer:init()    end    return layerend


运行如下:

Demo地址:https://github.com/yk81708090/quick-x_tableView.git

0 0
原创粉丝点击