From: http://www.jb51.cc/article/p-qawzrdvk-za.html
CCTableView和CCScrollView一样用于创建滚动视图,CCTableView的功能也比较多,创建比较麻烦
实例1:使用CCTableView创建滚动视图
首先创建一个TableView类
TableView.h中的代码
- #ifndef__TableView_H__
- #define__TableView_H__
- #include"cocos2d.h"
- #include"cocos-ext.h"
- USING_NS_CC;
- USING_NS_CC_EXT;
- classTableView:publicCCLayer,publicCCTableViewDataSource,publicCCTableViewDelegate
- {
- public:
- virtualboolinit();
- staticCCScene*scene();
- CREATE_FUNC(TableView);
- //创建一个数组
- CCArray*_arr;
- //返回格子的大小
- virtualCCSizetableCellSizeForIndex(CCTableView*table,unsignedintidx)
- {
- returncellSizeForTable(table);
- };
- //每个格子的大小
- virtualCCSizecellSizeForTable(CCTableView*table)
- {
- //返回窗口的大小
- returnCCDirector::sharedDirector()->getWinSize();
- }
- //返回格子的编号
- virtualCCTableViewCell*tableCellAtIndex(CCTableView*table,unsignedintidx)
- {
- return(CCTableViewCell*)_arr->objectAtIndex(idx);
- }
- //返回滚动的大小(格子的个数)
- virtualunsignedintnumberOfCellsInTableView(CCTableView*table)
- {
- return_arr->count();
- }
- virtualvoidtableCellTouched(CCTableView*table,CCTableViewCell*cell)
- {
- CCLog("clickedcellis%d",cell->getIdx());
- }
- virtualvoidscrollViewDidScroll(CCScrollView*view){};
- virtualvoidscrollViewDidZoom(CCScrollView*view){};
- };
- #endif//__TableView_H__
TableView.cpp中的代码
- #include"TableView.h"
- CCScene*TableView::scene()
- {
- CCScene*scene=CCScene::create();
- TableView*layer=TableView::create();
- scene->addChild(layer);
- returnscene;
- }
- boolTableView::init()
- {
- CCLayer::init();
- CCSizewinSize=CCDirector::sharedDirector()->getWinSize();
- CCPointcenter=ccp(winSize.width/2,winSize.height/2);
- //先创建好CCTableViewCell
- //创建一个数组
- _arr=CCArray::create();
- _arr->retain();
- for(inti=0;i<5;i++)
- {
- CCTableViewCell*cell=newCCTableViewCell();
- cell->autorelease();
- _arr->addObject(cell);
- CCSprite*sprite=CCSprite::create("HelloWorld.png");
- cell->addChild(sprite);
- sprite->setPosition(center);
- }
- //创建TableView
- CCTableView*tableView=CCTableView::create(this,winSize);
- addChild(tableView);
- //设置TableView的滚动方向
- //kCCScrollViewDirectionHorizonta表示在水平方向上滚动
- tableView->setDirection(kCCScrollViewDirectionHorizontal);
- //加载数据
- tableView->reloadData();
- tableView->setDelegate(this);
- returntrue;
- }
执行结果:
实例2:使用CCTableView创建一个小窗口的滚动视图(该功能常用于游戏中的选择道具)
首先创建一个TableViewSmall类
TableViewSmall.h中的代码
- #ifndef__TableViewSmall_H__
- #define__TableViewSmall_H__
- #include"cocos2d.h"
- #include"cocos-ext.h"
- USING_NS_CC;
- USING_NS_CC_EXT;
- classTableViewSmall:publicCCLayer,publicCCTableViewDelegate
- {
- public:
- virtualboolinit();
- staticCCScene*scene();
- CREATE_FUNC(TableViewSmall);
- //创建一个数组
- CCArray*_arr;
- //返回格子的大小
- virtualCCSizetableCellSizeForIndex(CCTableView*table,unsignedintidx)
- {
- if(1==idx)
- {
- returnCCSizeMake(60,40);
- }
- returncellSizeForTable(table);
- };
- //每个格子的大小
- virtualCCSizecellSizeForTable(CCTableView*table)
- {
- //每个格子的大小
- returnCCSizeMake(40,40);
- }
- //返回格子的编号
- virtualCCTableViewCell*tableCellAtIndex(CCTableView*table,unsignedintidx)
- {
- return(CCTableViewCell*)_arr->objectAtIndex(idx);
- }
- //返回滚动的大小(格子的个数)
- virtualunsignedintnumberOfCellsInTableView(CCTableView*table)
- {
- return_arr->count();
- }
- virtualvoidtableCellTouched(CCTableView*table,CCTableViewCell*cell)
- {
- CCLog("clickedcellis%d",cell->getIdx());
- }
- virtualvoidscrollViewDidScroll(CCScrollView*view){};
- virtualvoidscrollViewDidZoom(CCScrollView*view){};
- };
- #endif//__TableViewSmall_H__
TableViewSmall.cpp中的代码
- #include"TableViewSmall.h"
- CCScene*TableViewSmall::scene()
- {
- CCScene*scene=CCScene::create();
- TableViewSmall*layer=TableViewSmall::create();
- scene->addChild(layer);
- returnscene;
- }
- boolTableViewSmall::init()
- {
- CCLayer::init();
- CCSizewinSize=CCDirector::sharedDirector()->getWinSize();
- CCPointcenter=ccp(winSize.width/2,winSize.height/2);
- //先创建好CCTableViewCell
- //创建一个数组
- _arr=CCArray::create();
- _arr->retain();
- for(inti=0;i<5;i++)
- {
- CCTableViewCell*cell=newCCTableViewCell();
- cell->autorelease();
- _arr->addObject(cell);
- CCSprite*sprite=CCSprite::create("CloseNormal.png");
- cell->addChild(sprite);
- sprite->setPosition(ccp(20,20));
- }
- //创建TableView
- CCTableView*tableView=CCTableView::create(this,CCSizeMake(40*3,40));
- addChild(tableView);
- //设置TableView的滚动方向
- //kCCScrollViewDirectionHorizonta表示在水平方向上滚动
- tableView->setDirection(kCCScrollViewDirectionHorizontal);
- //加载数据
- tableView->reloadData();
- tableView->setDelegate(this);
- tableView->setPosition(center);
- returntrue;
- }
执行结果: