在cocos2d-x中CCTableView控件的使用方法
来源:互联网 发布:写小说的网站 知乎 编辑:程序博客网 时间:2024/05/19 21:43
头文件需要继承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中有什么东西。
当单元格上有按钮时,在实现按钮的方法中:
void menuCallBack(CCObject* object)
{
CCTableViewCell* cell = (CCTableViewCell*)(((CCMenuItemImage*)object)->getParent()->getParent());
CCLog("menu click cell index : %d\n",cell -> getIdx());
}
这样也可以通过单元格上的按钮来获得单元格。
//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中有什么东西。
当单元格上有按钮时,在实现按钮的方法中:
void menuCallBack(CCObject* object)
{
CCTableViewCell* cell = (CCTableViewCell*)(((CCMenuItemImage*)object)->getParent()->getParent());
CCLog("menu click cell index : %d\n",cell -> getIdx());
}
这样也可以通过单元格上的按钮来获得单元格。
1 0
- 在cocos2d-x中CCTableView控件的使用方法
- cocos2d-x中CCTableView的使用
- cocos2d-x中CCTableView的使用
- cocos2d-x中CCTableView的使用
- cocos2d-x中CCTableView关于顺序错乱的问题
- Cocos2d-x 2.x:CCTableView的使用
- cocos2d-x中CCTableView相关用法
- cocos2d-x CCScrollView和CCTableView的使用
- cocos2d-x CCScrollView和CCTableView的使用
- cocos2d-x中的CCTableView的相关用法
- cocos2d-x CCScrollView和CCTableView的使用
- Cocos2d-x lua CCTableView 的使用
- Cocos2d-X CCTableView的简单使用
- cocos2d-x CCScrollView和CCTableView的使用
- cocos2d-x CCScrollView和CCTableView的使用
- cocos2d-x中的CCTableView的相关用法
- cocos2d-x【CCTableView】
- Cocos2d-x 之CCTableView
- java中Thread的start()与run()的区别
- Organize Your Train part II_POJ_3007
- HDU 2023 求平均成绩
- 非常有用的WSDL,有天气预报,股市,交通等等。。。
- 一款免费好用的正则表达式工具:Regex Match Tracer
- 在cocos2d-x中CCTableView控件的使用方法
- hpu 2504 又见GCD
- c里面使用libcurl库实现发送post并获取post到的内容
- 2014-7-25-c#两数相除
- 数据挖掘相关公式的概述
- 数据库系统概论-[04]索引
- 黑马程序员-----OC内存管理(一)
- Best Time to Buy and Sell Stock II
- 伟创OA系统开发设计原则