zoukankan      html  css  js  c++  java
  • quick cocos2d-x 使用CCTableView 例子

    可以运行,已经测试过了,参考网络上别人的代码,觉得很有用,记录。直接上代码:

    发现一个很坑爹的地方,就是tableview定size的宽高,与tableview的cell的高宽是恰恰相反。。这个API让我有点凌乱..

    (注意方法声明的时候,用的.跟:  不可以混用。不然就错了~~)

     1 --
     2 -- Date: 2014-11-13 15:55:20
     3 --
     4 --调用代码: local rlayer = require("app.scenes.TableViewLayer").new()
     5         --  rlayer:setAnchorPoint(ccp(0, 0))
     6         --  rlayer:setPosition(ccp(0, 0))
     7         --  self:addChild(rlayer)
     8 local TableViewLayer = class("TableViewLayer", function()
     9     return display.newLayer()
    10 end)
    11 
    12 function TableViewLayer:ctor()
    13     self:onEnter()
    14 end
    15 
    16 function TableViewLayer.scrollViewDidScroll(view)
    17     print("scrollViewDidScroll")
    18 end
    19 
    20 function TableViewLayer.scrollViewDidZoom(view)
    21     print("scrollViewDidZoom")
    22 end
    23 
    24 function TableViewLayer.tableCellTouched(table,cell)
    25     print("cell touched at index: " .. cell:getIdx())
    26 end
    27 
    28 function TableViewLayer.cellSizeForTable(table,idx) 
    29     return 30,60   --返回tableview中一个单位cell的高,宽
    30 end
    31 
    32 function TableViewLayer.tableCellAtIndex(table, idx)
    33     local strValue = string.format("%d",idx)
    34     local cell = table:dequeueCell()
    35     local label = nil
    36     if nil == cell then
    37         cell = CCTableViewCell:new()
    38         --底层
    39         local table_bg = CCSprite:create("res/table_bg.png")
    40         table_bg:setAnchorPoint(CCPointMake(0,0))
    41         table_bg:setPosition(CCPointMake(0, 0))
    42         cell:addChild(table_bg)
    43 
    44         --图片层
    45         local sprite = CCSprite:create("res/icon.png")
    46         sprite:setAnchorPoint(CCPointMake(0,0))
    47         sprite:setPosition(CCPointMake(0, 0))
    48         cell:addChild(sprite)
    49 
    50         --文字层
    51         label = CCLabelTTF:create(strValue, "Helvetica", 20.0)
    52         label:setPosition(CCPointMake(0,0))
    53         label:setAnchorPoint(CCPointMake(0,0))
    54         label:setTag(123)
    55         cell:addChild(label)
    56     else
    57         label = tolua.cast(cell:getChildByTag(123),"CCLabelTTF")
    58         if nil ~= label then
    59             label:setString(strValue)
    60         end
    61     end
    62 
    63     return cell
    64 end
    65 
    66 --tableview中的cell个数
    67 function TableViewLayer.numberOfCellsInTableView(table)
    68    return 25
    69 end
    70 
    71 function TableViewLayer:onEnter()
    72     local table_view = CCTableView:create(CCSizeMake(60, 500))  --设定tableview的宽、高。tableview的大小决定滑动tableview的可触摸区域
    73     table_view:setAnchorPoint(ccp(0, 1))
    74     table_view:setDirection(kCCScrollViewDirectionVertical)
    75     table_view:setPosition(CommonAPI:getCenterX()/2,CommonAPI:getCenterY()/2)
    76     self:addChild(table_view)
    77 
    78     table_view:setVerticalFillOrder(kCCTableViewFillTopDown) --kCCTableViewFillBottomUp
    79     table_view:registerScriptHandler(self.scrollViewDidScroll,CCTableView.kTableViewScroll)
    80     table_view:registerScriptHandler(self.scrollViewDidZoom,CCTableView.kTableViewZoom)
    81     table_view:registerScriptHandler(self.tableCellTouched,CCTableView.kTableCellTouched)
    82     table_view:registerScriptHandler(self.cellSizeForTable,CCTableView.kTableCellSizeForIndex)
    83     table_view:registerScriptHandler(self.tableCellAtIndex,CCTableView.kTableCellSizeAtIndex)
    84     table_view:registerScriptHandler(self.numberOfCellsInTableView,CCTableView.kNumberOfCellsInTableView)
    85     table_view:reloadData()
    86 end
    87 
    88 return TableViewLayer

    over~

    注:在使用过程中,向下拖拉进度条太大力的时候,会发现tableview的单元cell乱序的情况。

    解决办法是:去除我上面贴的代码的36行判断语句。

  • 相关阅读:
    iOS下JS与OC互相调用(三)--MessageHandler
    在xcode6中使用矢量图(iPhone6置配UI)
    UITextField增加textDidChange回调功能
    IOS开发之格式化日期时间(转)
    ios中将事件同步到系统日历
    xcode中一些便捷用法@literals简写
    JavaScript
    fuzz for test of the Net::HTTP::GET
    perl6 中将 字符串 转成十六进制
    Net::HTTP 一次添加 cookie, body 发送post请求
  • 原文地址:https://www.cnblogs.com/vokie/p/4095453.html
Copyright © 2011-2022 走看看