Cocos2d-X与游戏开发cocos2d-Luacocos2d

cocos2d-x lua tableView

2017-12-14  本文已影响9人  亮亮同学

cocos2d-x技术群新群:117871561
c++技术交流群:593010226

我项目里用的这个鬼,没有用scroolview,是因为 这个鬼可以重复利用创建的子项,这样不需要重复的创建 与渲染 子项 。用着会比较流畅

第一部分 tableview基本设置

--创建tableview
self._skillView = cc.TableView:create(size)
----设置滚动方向  SCROLLVIEW_DIRECTION_VERTICAL是垂直滚动   SCROLLVIEW_DIRECTION_HORIZONTAL 是水平滚动
self._skillView:setDirection(cc.SCROLLVIEW_DIRECTION_VERTICAL)    
  --竖直从上往下排列  
self._skillView:setVerticalFillOrder(cc.TABLEVIEW_FILL_TOPDOWN)
self._skillView:setPosition(cc.p(50, 10))
--设置代理
self._skillView:setDelegate()
skill_bg:addChild(self._skillView)

第二部分tableview 添加回调 常用的五个个回调函数

  self.m_tableView:registerScriptHandler( handler(self, self.scrollViewDidScroll),cc.SCROLLVIEW_SCRIPT_SCROLL);           --滚动时的回掉函数  
    self.m_tableView:registerScriptHandler( handler(self, self.cellSizeForTable), cc.TABLECELL_SIZE_FOR_INDEX);             --列表项的尺寸  
   self.m_tableView:registerScriptHandler( handler(self, self.tableCellAtIndex), cc.TABLECELL_SIZE_AT_INDEX);              --创建列表项  
   self.m_tableView:registerScriptHandler( handler(self, self.numberOfCellsInTableView), cc.NUMBER_OF_CELLS_IN_TABLEVIEW); --列表项的数量  
self.m_tableView:registerScriptHandler( handler(self, self.tableCellTouched), cc.TABLECELL_TOUCHED); --触摸列表项cell的回调
--加载tableView的所有列表数据
      self.m_tableView:reloadData();  

第三部分tableview 回调的实现

--触摸子项时的点击事件 我的项目里没有写点击响应
function PriGameLayer:scrollViewDidScroll(view)
end
--滚动时点击事件我的项目里没有写点击响应
function PriGameLayer:scrollViewDidScroll(view)
end
--子视图大小 view是tableview,idx是每个子项的索引
function PriGameLayer:cellSizeForTable(view, idx)
    return 200 , 23
end

--子视图数目  返回的个数是tableview的高度/单个子项的高度+1
function PriGameLayer:numberOfCellsInTableView(view)
     if self._gameLayer.curCount == 6 then 
         return self._gameLayer.curCount+1
     else
        return self._gameLayer.curCount
    end
end
--获取子视图
function PriGameLayer:tableCellAtIndex(view, idx)   
    local index = idx+1
    local cell = view:dequeueCell()
        if not cell then
           cell = cc.TableViewCell:new()
            cc.Label:createWithTTF("Score","fonts/round_body.ttf",22)
            :move(80,10)
            :setTag(5)
            :setColor(cc.c3b(34,139,34))
            :setAnchorPoint(cc.p(0.0, 0.5))
            :addTo(cell)
            
        end 
           if self.playerScore == 1 then
               local str = ""
               if self._gameLayer.Player_1[index] > 0 then
                   str = "第"..index.."局: ".."+"..self._gameLayer.Player_1[index]
                else
                   str = "第"..index.."局: "..self._gameLayer.Player_1[index]
               end
             cell:getChildByTag(5):setString(str)
           elseif self.playerScore == 2 then 
                local str = ""
               if self._gameLayer.Player_2[index] > 0 then
                   str = "第"..index.."局: ".."+"..self._gameLayer.Player_2[index]
                else
                   str = "第"..index.."局: "..self._gameLayer.Player_2[index]
               end
             cell:getChildByTag(5):setString(str)
        elseif self.playerScore == 3 then 
              local str = ""
               if self._gameLayer.Player_3[index] > 0 then
                   str = "第"..index.."局: ".."+"..self._gameLayer.Player_3[index]
               else
                   str = "第"..index.."局: "..self._gameLayer.Player_3[index]
               end
             cell:getChildByTag(5):setString(str)
        end 
        
    return cell
end




上一篇下一篇

猜你喜欢

热点阅读