【Cocos2d-X】TableView的使用

在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();

效果图:

点击某一图片后:

时间: 2024-08-30 04:09:13

【Cocos2d-X】TableView的使用的相关文章

【COCOS2DX-游戏开发之三四】cocos2dx 3.0 TableView特殊用法:滚动时不能选择等等

cocos2dx 3.0版本TableView拍生自ScrollView,常用来做滚动列表,有几种特殊用法,不知道大家用到过没 要求:1.滚动时不能选中TableCell,非滚动状态才能选中 很简单,在TableView的delegate函数中,通过isTouchMoved()函数来判断 void WeaponSelectLayer::tableCellUnhighlight(cocos2d::extension::TableView* table, cocos2d::extension::Ta

cocos2d-x之TableView列表

HelloWorld.h #ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__ #include "cocos2d.h"#include <cocos-ext.h> USING_NS_CC_EXT;USING_NS_CC;//相当于using namespace cocos2d; //使类继承TableViewDataSource类型添加列表项,继承TabelViewDelegate添加事件监听器class

cocos2d-3x 版本tableview的使用(怎么取消弹簧效果);

1.在VS中设置 C++ 附加包含目录编辑添加$(EngineRoot)这句话. 2.引入头文件,而不这样写的目的是为了解决安卓找不到tableview.在引入命令空间. 3.实现tableview的功能,首页要共有继承TableViewDataSource和TableViewDelegate两个代理类. 4.实现下面的虚方法 virtual void scrollViewDidScroll(cocos2d::extension::ScrollView*view)override{}; virt

【COCOS2DX-游戏开发之三四】cocos2dx 3.0 TableView特殊使用方法:滚动时不能选择等等

cocos2dx 3.0版本号TableView拍生自ScrollView,经常使用来做滚动列表,有几种特殊使用方法,不知道大家用到过没 要求:1.滚动时不能选中TableCell,非滚动状态才干选中 非常easy,在TableView的delegate函数中,通过isTouchMoved()函数来推断 void WeaponSelectLayer::tableCellUnhighlight(cocos2d::extension::TableView* table, cocos2d::exten

Cocos2d-x3.1中的TableView的使用

1.首先看TableView的头文件 #include "cocos2d.h" #include "extensions/cocos-ext.h"//包含TableView的头文件 #include "ItemAdapter.h"//适配类 USING_NS_CC; //事件回调函数 typedef std::function<void(Ref*,cocos2d::ui::Widget::TouchEventType)> menuCa

Cocos2d-x 3.2 大富翁游戏项目开发-第二十五部分 大富翁股市

当角色走到股市图标时,进入股市界面.每走完一个回合,增加一条股票数据, 股市界面上半部分显示股票信息,包括代码,名称,当前价格,买入价格,涨跌百分比,角色持有的股票数量 下半部分显示股票价格走势,当点击一个股票时,显示相关股票的价格走势,共显示最新14条的价格走势. 每次点击购买,买入100股 .点击卖出,则卖出所持有的该股的所有股票.成交价格 等信息动态更新 点击返回,返回到游戏主界面,并更新角色资金值 1.首先添加股票类 包括代码,名称,买入价格,涨跌百分比,持仓数量等定义以及相关的get

cocos2dx 开发成长之路 005

cocos2dx 3.0版本TableView拍生自ScrollView,常用来做滚动列表,有几种特殊用法,不知道大家用到过没 要求:1.滚动时不能选中TableCell,非滚动状态才能选中 很简单,在TableView的delegate函数中,通过isTouchMoved()函数来判断 [cpp] view plaincopy void WeaponSelectLayer::tableCellUnhighlight(cocos2d::extension::TableView* table, c

cocos2dx 3.2键盘操控的列表页的初步实现

一.实现后的目标效果 有图有真相,首先上实现了的效果. 二 .思路 由于要加载较多数据,那么为了使得界面更近流畅,我采用TableView,其中他的Cell是可以复用的.创建10000个也是秒秒钟的事情. 那么使用上下排列的TableView,每个cell自定义三个Item即可,当然也可以N个,可以自己写好接口. 由于我们想使得tableView可以滚动到指定的cell位置,也就是一格一格滚动,那么我们最好自定义一个tableView继承于系统的tableView. 三 .实现步骤 如果你对于T

UITableViewController 滚动引起的cocos2d动画暂停问题的解决

UITableViewController 滚动引起的cocos2d动画暂停问题的解决 之前在使用UITableViewController进行滚动时,cocos2d的动画会暂停,直至滚动完毕才会继续动画. 后来发现可以这样解决,想要了解更多,请查阅NSRunLoop相关知识. // .h NSTimer* m_timer; // .m- (void)updateCCDirector { [[CCDirector sharedDirector] drawScene]; if (!self.tab