Cocos2d-X 使用CCTableView创建滚动视图

From: http://www.jb51.cc/article/p-qawzrdvk-za.html

CCTableView和CCScrollView一样用于创建滚动视图,CCTableView的功能也比较多,创建比较麻烦


实例1:使用CCTableView创建滚动视图

首先创建一个TableView类

TableView.h中的代码

  1. #ifndef__TableView_H__
  2. #define__TableView_H__
  3. #include"cocos2d.h"
  4. #include"cocos-ext.h"
  5. USING_NS_CC;
  6. USING_NS_CC_EXT;
  7. classTableView:publicCCLayer,publicCCTableViewDataSource,publicCCTableViewDelegate
  8. {
  9. public:
  10. virtualboolinit();
  11. staticCCScene*scene();
  12. CREATE_FUNC(TableView);
  13. //创建一个数组
  14. CCArray*_arr;
  15. //返回格子的大小
  16. virtualCCSizetableCellSizeForIndex(CCTableView*table,unsignedintidx)
  17. {
  18. returncellSizeForTable(table);
  19. };
  20. //每个格子的大小
  21. virtualCCSizecellSizeForTable(CCTableView*table)
  22. {
  23. //返回窗口的大小
  24. returnCCDirector::sharedDirector()->getWinSize();
  25. }
  26. //返回格子的编号
  27. virtualCCTableViewCell*tableCellAtIndex(CCTableView*table,unsignedintidx)
  28. {
  29. return(CCTableViewCell*)_arr->objectAtIndex(idx);
  30. }
  31. //返回滚动的大小(格子的个数)
  32. virtualunsignedintnumberOfCellsInTableView(CCTableView*table)
  33. {
  34. return_arr->count();
  35. }
  36. virtualvoidtableCellTouched(CCTableView*table,CCTableViewCell*cell)
  37. {
  38. CCLog("clickedcellis%d",cell->getIdx());
  39. }
  40. virtualvoidscrollViewDidScroll(CCScrollView*view){};
  41. virtualvoidscrollViewDidZoom(CCScrollView*view){};
  42. };
  43. #endif//__TableView_H__


TableView.cpp中的代码

  1. #include"TableView.h"
  2. CCScene*TableView::scene()
  3. {
  4. CCScene*scene=CCScene::create();
  5. TableView*layer=TableView::create();
  6. scene->addChild(layer);
  7. returnscene;
  8. }
  9. boolTableView::init()
  10. {
  11. CCLayer::init();
  12. CCSizewinSize=CCDirector::sharedDirector()->getWinSize();
  13. CCPointcenter=ccp(winSize.width/2,winSize.height/2);
  14. //先创建好CCTableViewCell
  15. //创建一个数组
  16. _arr=CCArray::create();
  17. _arr->retain();
  18. for(inti=0;i<5;i++)
  19. {
  20. CCTableViewCell*cell=newCCTableViewCell();
  21. cell->autorelease();
  22. _arr->addObject(cell);
  23. CCSprite*sprite=CCSprite::create("HelloWorld.png");
  24. cell->addChild(sprite);
  25. sprite->setPosition(center);
  26. }
  27. //创建TableView
  28. CCTableView*tableView=CCTableView::create(this,winSize);
  29. addChild(tableView);
  30. //设置TableView的滚动方向
  31. //kCCScrollViewDirectionHorizonta表示在水平方向上滚动
  32. tableView->setDirection(kCCScrollViewDirectionHorizontal);
  33. //加载数据
  34. tableView->reloadData();
  35. tableView->setDelegate(this);
  36. returntrue;
  37. }

执行结果:



实例2:使用CCTableView创建一个小窗口的滚动视图(该功能常用于游戏中的选择道具)

首先创建一个TableViewSmall类

TableViewSmall.h中的代码

  1. #ifndef__TableViewSmall_H__
  2. #define__TableViewSmall_H__
  3. #include"cocos2d.h"
  4. #include"cocos-ext.h"
  5. USING_NS_CC;
  6. USING_NS_CC_EXT;
  7. classTableViewSmall:publicCCLayer,publicCCTableViewDelegate
  8. {
  9. public:
  10. virtualboolinit();
  11. staticCCScene*scene();
  12. CREATE_FUNC(TableViewSmall);
  13. //创建一个数组
  14. CCArray*_arr;
  15. //返回格子的大小
  16. virtualCCSizetableCellSizeForIndex(CCTableView*table,unsignedintidx)
  17. {
  18. if(1==idx)
  19. {
  20. returnCCSizeMake(60,40);
  21. }
  22. returncellSizeForTable(table);
  23. };
  24. //每个格子的大小
  25. virtualCCSizecellSizeForTable(CCTableView*table)
  26. {
  27. //每个格子的大小
  28. returnCCSizeMake(40,40);
  29. }
  30. //返回格子的编号
  31. virtualCCTableViewCell*tableCellAtIndex(CCTableView*table,unsignedintidx)
  32. {
  33. return(CCTableViewCell*)_arr->objectAtIndex(idx);
  34. }
  35. //返回滚动的大小(格子的个数)
  36. virtualunsignedintnumberOfCellsInTableView(CCTableView*table)
  37. {
  38. return_arr->count();
  39. }
  40. virtualvoidtableCellTouched(CCTableView*table,CCTableViewCell*cell)
  41. {
  42. CCLog("clickedcellis%d",cell->getIdx());
  43. }
  44. virtualvoidscrollViewDidScroll(CCScrollView*view){};
  45. virtualvoidscrollViewDidZoom(CCScrollView*view){};
  46. };
  47. #endif//__TableViewSmall_H__

TableViewSmall.cpp中的代码

  1. #include"TableViewSmall.h"
  2. CCScene*TableViewSmall::scene()
  3. {
  4. CCScene*scene=CCScene::create();
  5. TableViewSmall*layer=TableViewSmall::create();
  6. scene->addChild(layer);
  7. returnscene;
  8. }
  9. boolTableViewSmall::init()
  10. {
  11. CCLayer::init();
  12. CCSizewinSize=CCDirector::sharedDirector()->getWinSize();
  13. CCPointcenter=ccp(winSize.width/2,winSize.height/2);
  14. //先创建好CCTableViewCell
  15. //创建一个数组
  16. _arr=CCArray::create();
  17. _arr->retain();
  18. for(inti=0;i<5;i++)
  19. {
  20. CCTableViewCell*cell=newCCTableViewCell();
  21. cell->autorelease();
  22. _arr->addObject(cell);
  23. CCSprite*sprite=CCSprite::create("CloseNormal.png");
  24. cell->addChild(sprite);
  25. sprite->setPosition(ccp(20,20));
  26. }
  27. //创建TableView
  28. CCTableView*tableView=CCTableView::create(this,CCSizeMake(40*3,40));
  29. addChild(tableView);
  30. //设置TableView的滚动方向
  31. //kCCScrollViewDirectionHorizonta表示在水平方向上滚动
  32. tableView->setDirection(kCCScrollViewDirectionHorizontal);
  33. //加载数据
  34. tableView->reloadData();
  35. tableView->setDelegate(this);
  36. tableView->setPosition(center);
  37. returntrue;
  38. }

执行结果:

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...