在cocos2d-x在CCTableView使用控制

头文件需要继承CCTableViewDataSource和CCTableViewDelegate

//CCScrollViewDelegate

virtual void scrollViewDidScroll(CCScrollView* view){};

virtual void scrollViewDidZoom(CCScrollView* view){};

//CCTableViewDelegate

virtual void tableCellTouched(CCTableView* table, CCTableViewCell* cell);//当点击单元格格时触发的方法

//单元格中CCTableViewCell类中有一个属性idx,能够推断点击的这个单元格的索引

virtual void tableCellHighlight(CCTableView* table,CCTableViewCell* cell);//按下去的时候就是高亮显示,这里能够设置高

virtual void tableCellUnhighlight(CCTableView* table,CCTableViewCell* cell);//松开的时候,取消高亮状态

//CCTableViewDataSource

virtual unsigned int numberOfCellsInTableView(CCTableView* table);//返回这个表格有多少单元格

virtual CCSize cellSizeForTable(CCTableView* table);//返回每一个Cell的大小

virtual CCTableViewCell* tableCellAtIndex(CCTableView* table,unsigned int idx);
//生成单元格。即单元格的内容

//实例

在init方法中:

CCSize winSize = CCDirector::sharedDirector() -> getWinSize();

CCTableView* tableView = CCTableView::create(this,CCSizeMake(winSize.width/2,winSize.height/3));

tableView -> setDirection(kCCScrollViewDirectionVertical);

tableView -> setPosition(ccp(winSize.width * 0.07,winSize.width * 0.35));

tableView -> setDelegate(this);

tableView -> setTag(802);

tableView -> setAnchorPoint(CCPointZero);

tableView -> setTouchPriority(-129);

this -> addChild(tableView);

//这里为什么要设置此表格的触摸优先级为-129呢?

假设不这么办的话,当这个层的触摸开启的时候,滑动表格中的单元格不会滑动,把表格的触摸给吞噬掉了,所以要这样设置。

那么单元格的内容是什么呢?

以下看这种方法:

CCTableViewCell* tableCellAtIndex(CCTableView* table,unsigned int idx)

{

CCTableViewCell* cell = table -> dequeueCell();

if(!cell)

{

cell = new CCTableViewCell();

cell -> autorelease();

}

cell -> removeAllChildrenWithCleanup(true);

CCLabelTTF* label = CCLabelTTF::create("abc","Arial",24);

label -> setPosition(ccp(150,30));

cell -> addChild(label);

return cell;

}

//这样单元格中就有了内容

那么如何获取到单元格的内容呢?看以下这种方法

void tableCellTouched(CCTableView* table, CCTableViewCell* cell)

当点击单元格时,会运行这种方法,cell中有个属性getIdx(),能够推断点击的单元格是第几个单元格,当然。通过cell->getChildByTag

(),能够捕获到cell中有什么东西。

当单元格上有button时,在实现button的方法中:

void menuCallBack(CCObject* object)

{

CCTableViewCell* cell = (CCTableViewCell*)(((CCMenuItemImage*)object)->getParent()->getParent());

CCLog("menu click cell index : %d\n",cell -> getIdx());

}

这样也能够通过单元格上的button为了得到单位格。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-12 17:24:54

在cocos2d-x在CCTableView使用控制的相关文章

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

tableview scrollViewDidScroll函数中有一段   ----  即---滑动tableview时触发的函数 : 会将全部显示的cell又一次刷新(刷新函数中调用了自己定义的tableCellAtIndex) ////// for (unsigned int i=startIdx; i <= endIdx; i++) { //if ([m_pIndices containsIndex:i]) if (m_pIndices->find(i) != m_pIndices-&g

cocos2d横版游戏之摇杆控制

以上是一个控制摇杆,分为一个底座和摇杆小圈圈,我们的目的是通过算出摇杆小圈跟底座中心的偏移来控制任务的走向,我们计算出一个偏移量来,然后在场景update(foat dt)...每一帧的位置上加上这个偏移量,不停的播放行走动画(当然人物的朝向要对),就可以达到控制任务行走的效果了,这一点你可能一下子就会想到高中学过的向量的加减处理了......坐标象限....之类的. void DirectionControlButton::controlTargetMove(CCTouch *pTouch){

Cocos2d中CCScrollView和CCTableView使用

在游戏和应用中经常要实现左右滑动展示游戏帮助.以列表显示内容的UI效果,就像android中的Gallery和ListView.本文通过CCScrollView和CCTableView分别来实现这两个效果,基于cocos2d-x 2.0.4版本. 首先来简单了解一下这两个东东,CCScrollView本身是一个CCLayer,而CCTableView是CCScrollView的子类,这是引擎已经帮我们封装好了的,CCTableView可以设置成横向和纵向,用它可以实现类似于Gallery和Lis

8 cocos2dx添加场景切换效果,控制场景切换彻底完成之后再执行动画

 1 添加场景切换效果 供场景切换的类: CCTransitionJumpZoom CCTransitionProgressRadialCCW CCTransitionProgressRadialCW CCTransitionProgressHorizontal CCTransitionProgressVertical CCTransitionProgressInOut CCTransitionProgressOutIn CCTransitionCrossFade CCTransitionF

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

CCTableView和CCScrollView一样用于创建滚动视图,CCTableView的功能也比较多,创建比较麻烦 实例1:使用CCTableView创建滚动视图 首先创建一个TableView类 TableView.h中的代码 #ifndef __TableView_H__ #define __TableView_H__ #include "cocos2d.h" #include "cocos-ext.h" USING_NS_CC; USING_NS_CC_

cocos2D 虚拟摇杆Joystick功能实现

@implementation InputLayer        - (id)init    {        if(self = [super init])        {            winSize = [[CCDirector sharedDirector] winSize];            [self addJoystick];            [self addFireButton];            [self scheduleUpdate];   

Cocos2d-x 自定义按钮类控制精灵攻击----之游戏开发《赵云要格斗》

本篇要讲讲怎么自定义按钮类,并通过这个按钮类的对像来控制精灵的攻击.在看本篇之前最好先看看上一篇 Cocos2d-x虚拟摇杆控制精灵上下左右运动----之游戏开发<赵云要格斗>,要素材和项目代码的把邮箱留下吧,因为这个项目还没弄完,我一直在改. 精灵的攻击也是一个动画,只不过,这个动画只播放一次,相当于在界面上加一个按钮,然后你点一次按钮,精灵就播放一次动画. 一.自定义按钮类 按钮可以用COCOS2D-X自带的,想着方便一点,我就自己封装了一个按钮类ControlButton,在里面添加一个

cocos2d 3.0 屏幕适配

1.解决方案 先直接给出解决方案,再慢慢解释,当然这个解决方案也不是完全完美的. [cpp] view plaincopy //如果是横屏游戏: glview->setDesignResolutionSize(960, 640, ResolutionPolicy::FIXED_HEIGHT); //一张960x640的背景显示 auto visibleSize = Director::getInstance()->getVisibleSize(); auto Bg = Sprite::crea

quick cocos2d x 手机(Android端)启动过程学习

简要学习下quick cocos2d x 在安卓端启动的过程. 首先需要了解一点:quick cocos2d x是依托于Android的activity和GLSurfaceView(继承自SurfaceView)的环境来显示quick层的游戏界面. (1)首先quick类的android游戏从AndroidManifest.xml文件指定的activity(假设AC)启动. (2)AC继承父类的Cocos2dxActivity. (3)调用静态初始化块,加载cocos2dx的动态库.也就是一些C