转自:http://www.cnblogs.com/dcxing/archive/2013/01/16/2862068.html

CCTableView在游戏中一般用在背包这样场景或层中,当然也不止这些,在ios开发中UITableView的应用是相当的广泛,当然它们的用途是一样的。(其实你会发现CCtableView其实就是参照UITableView来写的,所以做过ios开发的同学happy了)。

既然说到了用到背包的地方,那么我们就做一个简单的背包信息的例子来学习它吧。

  先上代码再说 .h文件

//
// CCTableViewLayer.h
// Cocos2dXLearnDemo
//
//
#ifndef __Cocos2dXLearnDemo__CCTableViewLayer__
#define __Cocos2dXLearnDemo__CCTableViewLayer__
#include <iostream>
#include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC;
USING_NS_CC_EXT; class CCTableViewLayer:publicCCLayer,publicCCTableViewDataSource,publicCCTableViewDelegate{
public:
// Method 'init' in cocos2d-x returns bool, instead of 'id' in cocos2d-iphone (an object pointer)
virtual bool init();
// preprocessor macro for "static create()" constructor ( node() deprecated )
CREATE_FUNC(CCTableViewLayer);
// DataSource
/**
* cell height for a given table.
*
* @param table table to hold the instances of Class
* @return cell size
*/
virtual CCSize cellSizeForTable(CCTableView *table); /**
* a cell instance at a given index
*
* @param idx index to search for a cell
* @return cell found at idx
*/
virtual CCTableViewCell* tableCellAtIndex(CCTableView *table, unsigned int idx);
/**
* Returns number of cells in a given table view.
*
* @return number of cells
*/
virtual unsigned int numberOfCellsInTableView(CCTableView *table); //delegate
virtual void tableCellTouched(CCTableView* table, CCTableViewCell* cell);
// 另外还要引入CCScrollViewDelegate的虚函数,原因是CCTableView继承自CCScrollView
virtual void scrollViewDidScroll(cocos2d::extension::CCScrollView* view);
virtual void scrollViewDidZoom(cocos2d::extension::CCScrollView* view);
}; #endif /* defined(__Cocos2dXLearnDemo__CCTableViewLayer__) */ .m文件
//
// CCTableViewLayer.cpp
// Cocos2dXLearnDemo
//
//
#include "CCTableViewLayer.h"
#include "TestSprite.h" boolCCTableViewLayer::init(){
if(!CCLayer::init()){
returnfalse;
} // 第一个参数是dataSource
CCTableView *tableView=CCTableView::create(this, CCSizeMake(, ));
tableView->setPosition(ccp(, ));
// 设置方向
tableView->setDirection(kCCScrollViewDirectionVertical);
tableView->setAnchorPoint(CCPointZero);
// tableView->setAnchorPoint(ccp(0.5, 0.5));
tableView->setPosition(ccp(,));
tableView->setDelegate(this); CCLOG("AnchPoint=%f,%f",tableView->getAnchorPoint().x,tableView->getAnchorPoint().y); // 设置顺序是自上往下
tableView->setVerticalFillOrder(kCCTableViewFillTopDown);
// CCLOG("tableView->getPosition()=%f,%f",tableView->getPosition().x,tableView->getPosition().y);
this->addChild(tableView);
// CCLOG("AfterAnchPoint=%f,%f",tableView->getAnchorPoint().x,tableView->getAnchorPoint().y);
tableView->reloadData();
this->setTouchEnabled(true); returntrue;
} //datasource
CCSizeCCTableViewLayer::cellSizeForTable(CCTableView *table){
return CCSizeMake(table->getContentSize().width, );
}  CCTableViewCell* CCTableViewLayer::tableCellAtIndex(CCTableView *table, unsignedint idx){ CCTableViewCell *cell = table->dequeueCell(); if(!cell){
cell = new CCTableViewCell();
cell->autorelease(); } cell->removeAllChildrenWithCleanup(true);
for (int i=; i<; i++) {
CCSprite *testSprite=CCSprite::create("Icon.png");
testSprite->setPosition(ccp(+*i, ));
cell->addChild(testSprite);
}
return cell;
} unsigned int CCTableViewLayer::numberOfCellsInTableView(CCTableView *table){
return ;
} //delegate
voidCCTableViewLayer::tableCellTouched(CCTableView* table, CCTableViewCell* cell){
// CCLog("HHHHHHHH");
} void CCTableViewLayer::scrollViewDidScroll(CCScrollView* view){
// CCLOG("scrollViewDidScroll");
} //设置Zoom的时候进行调用
void CCTableViewLayer::scrollViewDidZoom(CCScrollView* view){
// CCLOG("scrollViewDidZoom");
}

首先CCTableView继承自CCScrollView,自然它是在 Cocosd-x 的扩展库里面.

所以你会发现要引入下面两个虚函数。

virtual void scrollViewDidScroll(cocos2d::extension::CCScrollView* view) {}
virtual void scrollViewDidZoom(cocos2d::extension::CCScrollView* view) {}

另外它的用法基本和UITableView是一样的。当然我们这里要继承

public CCTableViewDataSource,public CCTableViewDelegate

几个方法和UITableView的都差不多。

//CCTableViewDataSource
CCSizeCCTableViewLayer::cellSizeForTable(CCTableView *table)
unsigned int CCTableViewLayer::numberOfCellsInTableView(CCTableView *table)
CCTableViewCell* CCTableViewLayer::tableCellAtIndex(CCTableView *table, unsignedint idx)
//CCTableViewDelegate
void CCTableViewLayer::tableCellTouched(CCTableView* table, CCTableViewCell* cell)

cocos2d-x CCTableView的更多相关文章

  1. Cocos2D游戏项目CCTableView在Xcode7.2下的无法滚动问题

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 一个RPG游戏转换到Xcode7.2下发现一个问题,原来可以上 ...

  2. Cocos2d—X游戏开发之CCTableView详解(十一)

    本来很早就想写关于CCTableView的文章,但是在基本功能实现之后呢,项目需求增加导致对这个控件的研究必须更加深入一点. 好的,现在开始介绍一下这个控件,在Cocos2d—X引擎中,这是一个仿制i ...

  3. 【Cocos2d-x for WP8 学习整理】(4)CCTableView 实现《天天爱消除》中的得分榜

    接上回 CCScrollView 继续,在GUI 里还有个 CCScrollView 的子类---CCTableView . 这个名字应该是从 IOS 里的 UITableView来的,其实是跟WP8 ...

  4. cocos2d-x CCScrollView和CCTableView的使用(转载)

    转载请注明来自:Alex Zhou的程序世界,本文链接:http://codingnow.cn/cocos2d-x/1024.html //============================== ...

  5. CCScrollView/CCTableView(CCTableViewDelegate CCTableViewDataSource CCTableView-滑动列表-游戏中大量使用 非常重要的一个类)

    tableview scrollViewDidScroll函数中有一段   ----  即---滑动tableview时触发的函数 : 会将全部显示的cell又一次刷新(刷新函数中调用了自己定义的ta ...

  6. CCTableView 简单样例

    非常像android中的listview #pragma once; #include "cocos2d.h" using namespace cocos2d; //使用CCTab ...

  7. Cocos2d-x CCTableView实现列表

    在ios程序设计中,会大量使用到tableview视图(UITableView),那么在cocos2d-x中,如果需要类似的列表,该如何实现呢?在引擎中参照ios中的UITableView实现了一个叫 ...

  8. cocos2d-x关于CCTableView的“乱序问题”的理解

    Cocos2d-x有一个不错的控件CCTableView.之前用的时候发现有cell的顺序错乱和重复出现的问题.后来仔细看了一下源码,发现是自己用法错误.但是网上有人说是一个bug,要改源码.我发现2 ...

  9. CCTableView(一)

    #ifndef __TABLEVIEWTESTSCENE_H__ #define __TABLEVIEWTESTSCENE_H__ #include "cocos2d.h" #in ...

  10. CCTableView

    今天用到TableView, 我就来记录一下....这些都是在网上找到了资料 //首先 继承 : public cocos2d::extension::CCTableViewDelegate,publ ...

随机推荐

  1. C#进程启动程序,并禁止原窗口操作

    Process myProcess = new Process();            myProcess.StartInfo.FileName = exeName;            myP ...

  2. Android service binder aidl 关系

    /********************************************************************************** * Android servic ...

  3. ubuntu 安装 ia32-libs

    很多软件只有32位的,有的依赖32位库还挺严重的:从ubuntu 13.10已经废弃了ia32-libs,但可以使用多架构,安装软件或包apt-get install program:i386.有的还 ...

  4. live555学习之基本类介绍及计划任务深度探讨

    liveMedia项目的源代码包括四个基本的库,各种测试代码以及Media Server.四个基本的库分别是: UsageEnvironment&TaskScheduler, groupsoc ...

  5. B树索引和位图索引的区别!

    B树索引主键和唯一性约束字段的B树索引,效率几乎和海量数据没有关系. 键值重复率低的字段比较适合使用B树索引. 位图索引键值重复率高的字段比较适合使用位图索引.count.and.or.in这些特定的 ...

  6. TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流

    目前建立在TCP协议上的网络协议特别多,有telnet,ssh,有ftp,有http等等.这些协议又可以根据数据吞吐量来大致分成两大类:(1)交互数据类型,例如telnet,ssh,这种类型的协议在大 ...

  7. 判断DataSet是否有数据

    if (data1.Tables[0].Rows.Count>0)        {            MessageInfoText.Text = data1.Tables[0].Rows ...

  8. Spring的事务传播属性,数据库的隔离级别

    Spring事务的传播属性  REQUIRED 业务方法需要在一个事务中运行,如果方法运行时,已处在一个事务中,那么就加入该事务,否则自己创建一个新的事务.这是spring默认的传播行为. SUPPO ...

  9. UIBezierPath 贝塞尔曲线

    1. UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(30, 30, 100, 100) corner ...

  10. apache环境下配置服务器支持https

    SSL加密的意义在于保护服务器到客户端的信息或者是客户端到服务器的信息不被监听和篡改. 现在一些主流的网站都已经是通过 https访问了,搜索引擎对此类网站的收录也不存在问题了. 具体的配置流程大概是 ...