转自: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. ZOJ 2587 Unique Attack (最小割唯一性)

    题意 判断一个无向图的割是否唯一 思路 错误思路:一开始想的是判断割边是否都是关键割边,那既然割边两端点能连通S.T点的边是关键边,那么只要遇到有某个边两端点不连通S or T则这条边就不是关键割边( ...

  2. django - get_or_create() 使用提醒

    [omron - debug] user_id建表的时候,不能使用unique,因为一个用户,可能有多个product_id,相对应的是,get_or_create()中的查询参数,如果在建表中有un ...

  3. 四、oracle基本sql语句和函数详解

    一.oracle常用数据类型 一.  数据定义语言(ddl) 数据定义语言ddl(data definition language)用于改变数据库结构,包括创建.更改和删除数据库对象. 用于操纵表结构 ...

  4. iOS AFNetworking的使用

    转:http://www.cnblogs.com/lookenwu/p/3927897.html AFNetworking几乎是iOS上最常用的HTTP库了,AFNetworking也确实用起来简单, ...

  5. UITextField限制字数的方法

    转:http://blog.csdn.net/marujunyy/article/details/9985411 在输入东西的时候,如果想限制最大字数,可以用下面方法: - (BOOL)textFie ...

  6. Delphi 2010 安装及调试

    呵呵,毫不客气地说,Delphi 2010 这个版本可以算是 Delphi 的一个“里程碑”,为什么这么说?因为这个版本实现了几个 Delphi 应该有却一直没有的功能 Delphi 2010 的新功 ...

  7. 在PHP中如何获取用户的真实IP

    /** * 获得用户的真实IP地址 * * @access public * @return string */ function real_ip() { static $realip = NULL; ...

  8. hdu 1198 Farm Irrigation

    令人蛋疼的并查集…… 我居然做了大量的枚举,居然过了,我越来越佩服自己了 这个题有些像一个叫做“水管工”的游戏.给你一个m*n的图,每个单位可以有11种选择,然后相邻两个图只有都和对方连接,才判断他们 ...

  9. [转] ArcGIS engine中气泡标注的添加、修改

    小生 原文 ArcGIS engine中气泡标注的添加.修改! 你微微地笑着,不同我说什么话.而我觉得,为了这个,我已等待得久了.                                   ...

  10. 试验笔记 - Eclipse的.class反编译插件

    常用的反编译工具有: JAD Java Decompiler Download Mirror(?) http://varaneckas.com/jad/ JadClipse (较好) http://j ...