TableView(一)

来源:互联网 发布:makerbot软件下载 编辑:程序博客网 时间:2024/06/05 18:39

说明

引擎版本:cocos2d-x 3.4    编译器:visual studio 2013

类继承

简介

要使用TableView,要包含头文件和继承相关类、实现相关接口;在项目属性-配置属性-C/C++-附加包含目录添加$(EngineRoot):
.h文件:
  1. #include "cocos2d.h"
  2. #include "cocos-ext.h"
  3. USING_NS_CC;
  4. USING_NS_CC_EXT;
  5. class HelloWorld : public cocos2d::Layer, TableViewDataSource, TableViewDelegate
  6. {
  7. public:
  8. /*必须实现的函数*/
  9. virtual void scrollViewDidScroll(ScrollView* view){};
  10. virtual void scrollViewDidZoom(ScrollView* view){};
  11. virtual void tableCellTouched(TableView* table, TableViewCell* cell);
  12. virtual Size tableCellSizeForIndex(TableView* table, ssize_t idx);
  13. virtual TableViewCell* tableCellAtIndex(TableView* table, ssize_t idx);
  14. virtual ssize_t numberOfCellsInTableView(TableView* table);
  15. };
.cpp文件:
  1. TableView* tableView = TableView::create(this, Size(300, 100));
  2. tableView->setDirection(ScrollView::Direction::VERTICAL);
  3. tableView->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2));
  4. tableView->setDelegate(this);
  5. tableView->setVerticalFillOrder(TableView::VerticalFillOrder::TOP_DOWN);
  6. this->addChild(tableView);
  7. tableView->reloadData();
  1. void HelloWorld::tableCellTouched(TableView* table, TableViewCell* cell)
  2. {
  3. CCLOG("cell touched at index:%i", cell->getIdx());
  4. }
  5. Size HelloWorld::tableCellSizeForIndex(TableView* table, ssize_t idx)
  6. {
  7. return Size(50, 50);
  8. }
  9. TableViewCell* HelloWorld::tableCellAtIndex(TableView* table, ssize_t idx)
  10. {
  11. TableViewCell* cell = table->dequeueCell();
  12. if (!cell){
  13. cell = new TableViewCell();
  14. cell->autorelease();
  15. Sprite* sprite = Sprite::create("CloseSelected.png");
  16. sprite->setAnchorPoint(Vec2::ZERO);
  17. sprite->setPosition(Vec2(0, 0));
  18. cell->addChild(sprite);
  19. Label* label = Label::createWithSystemFont(StringUtils::toString(idx), "123", 20);
  20. label->setPosition(Vec2::ZERO);
  21. label->setAnchorPoint(Vec2::ZERO);
  22. label->setTag(123);
  23. cell->addChild(label);
  24. }
  25. else{
  26. Label* label = (Label*)(cell->getChildByTag(123));
  27. label->setString(StringUtils::toString(idx));
  28. }
  29. return cell;
  30. }
  31. ssize_t HelloWorld::numberOfCellsInTableView(TableView* table)
  32. {
  33. return 5;
  34. }


 
 
0 0
原创粉丝点击