在cocos2d-x在CCTableView使用控制
2015-08-17 11:07
316 查看
头文件需要继承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为了得到单位格。
//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为了得到单位格。
相关文章推荐
- 9秒学院总结Cocos2d-X面试题
- Eclipse编译调试Cocos2d问题汇总
- Cocos2dx_视觉差效果层ParallaxNode
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第三节:3D摄像机
- 9秒学院总结Cocos2d-X面试题
- Cocos2d-x问题纪录:removeChild和附有PhysicsBody的csb动画
- Cocos2d-js中Chipmunk引擎
- Cocos2d-x学习笔记(五)仿真树叶飘落效果的实现(精灵旋转、翻转、钟摆运动等综合运用)
- cocos2dx——lua自动和手动绑定
- Cocos中有关九宫格的解释
- Cocos2dx创建碰撞刚体
- Cocos2d-x 中与内存管理有关的宏
- cocos2dx 使得单麻将(三)
- cocos2dx-3.0(13)------SpriteBatchNode与SpriteFrameCache渲染速度
- quick-cocos2d-x游戏开发【5】——创建菜单
- cocos2d-x3.0 lua学习(一个)
- 关于Cocos2d-x的CC_SYNTHESIZE 和 CC_SYNTHESIZE_READONLY 宏的作用
- cocos2dx --- button点击放大中心
- 小小菜之Cocos2d-x游戏开发旅程——项目实例:贪吃蛇(5)
- 细说Cocos2d-JS——项目如何Run起来