码迷,mamicode.com
首页 > 其他好文 > 详细

在cocos2d-x在CCTableView使用控制

时间:2015-08-17 11:52:06      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

头文件需要继承CCTableViewDataSource和CCTableViewDelegate
//CCScrollViewDelegate
virtual void scrollViewDidScroll(CCScrollView* view){};
virtual void scrollViewDidZoom(CCScrollView* view){};

//CCTableViewDelegate
virtual void tableCellTouched(CCTableView* table, CCTableViewCell* cell);//当点击单元格格时触发的方法
//单元格中CCTableViewCell类中有一个属性idx,能够推断点击的这个单元格的索引
virtual void tableCellHighlight(CCTableView* table,CCTableViewCell* cell);//按下去的时候就是高亮显示,这里能够设置高
virtual void tableCellUnhighlight(CCTableView* table,CCTableViewCell* cell);//松开的时候,取消高亮状态

//CCTableViewDataSource
virtual unsigned int numberOfCellsInTableView(CCTableView* table);//返回这个表格有多少单元格
virtual CCSize cellSizeForTable(CCTableView* table);//返回每一个Cell的大小
virtual CCTableViewCell* tableCellAtIndex(CCTableView* table,unsigned int idx); //生成单元格。即单元格的内容


//实例
在init方法中:
CCSize winSize = CCDirector::sharedDirector() -> getWinSize();
CCTableView* tableView = CCTableView::create(this,CCSizeMake(winSize.width/2,winSize.height/3));
tableView -> setDirection(kCCScrollViewDirectionVertical);
tableView -> setPosition(ccp(winSize.width * 0.07,winSize.width * 0.35));
tableView -> setDelegate(this);
tableView -> setTag(802);
tableView -> setAnchorPoint(CCPointZero);
tableView -> setTouchPriority(-129);
this -> addChild(tableView);
//这里为什么要设置此表格的触摸优先级为-129呢?
假设不这么办的话,当这个层的触摸开启的时候,滑动表格中的单元格不会滑动,把表格的触摸给吞噬掉了,所以要这样设置。


那么单元格的内容是什么呢?
以下看这种方法:
CCTableViewCell* tableCellAtIndex(CCTableView* table,unsigned int idx)
{
  CCTableViewCell* cell = table -> dequeueCell();
  if(!cell)
  {
    cell = new CCTableViewCell();
    cell -> autorelease();
  }
  cell -> removeAllChildrenWithCleanup(true);
  CCLabelTTF* label = CCLabelTTF::create("abc","Arial",24);
  label -> setPosition(ccp(150,30));
  cell -> addChild(label);


  return cell;
}
//这样单元格中就有了内容
那么如何获取到单元格的内容呢?看以下这种方法
void tableCellTouched(CCTableView* table, CCTableViewCell* cell)
当点击单元格时,会运行这种方法,cell中有个属性getIdx(),能够推断点击的单元格是第几个单元格,当然。通过cell->getChildByTag


(),能够捕获到cell中有什么东西。
当单元格上有button时,在实现button的方法中:
void menuCallBack(CCObject* object)
{
  CCTableViewCell* cell = (CCTableViewCell*)(((CCMenuItemImage*)object)->getParent()->getParent());
  CCLog("menu click cell index : %d\n",cell -> getIdx());
}
这样也能够通过单元格上的button为了得到单位格。
  

版权声明:本文博客原创文章,博客,未经同意,不得转载。

在cocos2d-x在CCTableView使用控制

标签:

原文地址:http://www.cnblogs.com/yxwkf/p/4736070.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!