在Cocos2d-x使用TableView的过程如下:
- 首先用一个类继承CCTableViewDelegate(代理)和CCTableViewDataSource(数据源);
- 然后实现里面的有关tableView操作和内容的四个抽象方法;
- 最后就可以在场景类中通过CCTableView来使用这个类,CCTableView会分别设置代理对象和数据源对象
示例:
TableView.h
#ifndef _TABELVIEW_H_
#define _TABLEVIEW_H_
#include "cocos2d.h"
#include "cocos-ext.h"
using namespace cocos2d;
class TableView : public cocos2d::extension::CCTableViewDelegate,public cocos2d::extension::CCTableViewDataSource{
public:
//================
//需实现的方法
//================
//处理触摸事件
virtual void tableCellTouched(cocos2d::extension::CCTableView* table,cocos2d::extension::CCTableViewCell* cell);
//每一项的宽度和高度
virtual cocos2d::CCSize cellSizeforTable(cocos2d::extension::CCTableView *table);
//生成列表每一项的内容
unsigned int idx);
//一共多少项
virtual unsigned int numberOfCellsInTableView(cocos2d::extension::CCTableView *table);
//================
//可忽略的方法
//================
//继承自scrollView所需要的方法,可以空函数体忽略
virtual void scrollViewDidScroll(cocos2d::extension::CCScrollView* view){}
virtual void scrollViewDidZoom(cocos2d::extension::CCScrollView* view){}
};
#endif
TableView.cpp
#include "TableView.h"
//每个单元格选项的大小
CCSize TableView::cellSizeforTable(extension::CCTableView *table){
return CCSizeMake(480,320);
}
//单个选项的显示
extension::CCTableViewCell* TableView::tableCellAtIndex(extension::CCTableView *table,unsigned int idx){
extension::CCTableViewCell *cell = table->dequeueCell();
if (!cell) {
// the sprite
cell = new extension::CCTableViewCell();
cell->autorelease();
CCSprite *sprite = CCSprite::create("HelloWorld.png");
sprite->setAnchorPoint(ccp(0,0));
sprite->setPosition(ccp(0,30));
cell->addChild(sprite);
}
return cell;
}
//选项个数
unsigned int TableView::numberOfCellsInTableView(extension::CCTableView *table){
return 5;
}
//点击单元格选项的响应事件
void TableView::tableCellTouched(extension::CCTableView* table,extension::CCTableViewCell* cell){
char s[20]; sprintf(s,"the cell is %d",cell->getIdx()); CcmessageBox(s,"对话框"); }
在HelloWorld::init方法里的使用TableView的部分代码:
//创建一个自己的TableView
TableView* tv = new TableView();
//此处的tv绑定的是数据源
cocos2d::extension::CCTableView *tableView =
cocos2d::extension::CCTableView::create(tv,CCSizeMake(480,320));
//横向排列
tableView->setDirection(cocos2d::extension::kCCScrollViewDirectionHorizontal);
//放在屏幕中央
tableView->setPosition(ccp(visibleSize.width / 2 - 240,visibleSize.height / 2 - 160));
//此处的tv是代理
tableView->setDelegate(tv);
tableView->setVerticalFillOrder(cocos2d::extension::kCCTableViewFillTopDown);
this->addChild(tableView);
tableView->reloadData();
效果图:
点击某一图片后:
原文地址:https://www.jb51.cc/cocos2dx/343222.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。