【Cocos2d-X】TableView的使用

前端之家收集整理的这篇文章主要介绍了【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();

效果图:

点击某一图片后:

猜你在找的Cocos2d-x相关文章