首页 > 代码库 > 1CCTableView的使用,TableView响应和小格子tableView实现

1CCTableView的使用,TableView响应和小格子tableView实现

1        CCTableView的使用

T26TableView.h

#ifndef __T26TableView_H__

#define __T26TableView_H__

 

#include "cocos2d.h"

#include "cocos-ext.h"

#include "TBack.h"

USING_NS_CC;

USING_NS_CC_EXT;

 

class T26TableView :public TBack, public CCTableViewDataSource

{

public:

    CREATE_FUNC(T26TableView);

    bool init();

    static CCScene * scene();

 

    CCArray* _cells;

 

    //获取指定的CCTableViewCell

    virtual CCTableViewCell* tableCellAtIndex(CCTableView *table,unsignedint idx)

    {

        return (CCTableViewCell*)_cells->objectAtIndex(idx);

    }

 

    //获取CCTableViewCell的个数

    virtual unsigned int numberOfCellsInTableView(CCTableView *table)

    {

        return _cells->count();

    }

 

    //获得Cell的大小

    virtual CCSize tableCellSizeForIndex(CCTableView *table,unsignedint idx) {

        return cellSizeForTable(table);

    }

 

    virtual CCSize cellSizeForTable(CCTableView *table) {

        return CCDirector::sharedDirector()->getWinSize();

    }

 

};

 

#endif

T26TableView.cpp

#include "T26TableView.h"

 

CCScene *T26TableView::scene()

{

    CCScene * scene = CCScene::create();

    T26TableView * layer = T26TableView::create();

    scene->addChild(layer);

    return scene;

}

 

bool T26TableView::init()

{

    TBack::init();

 

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

 

    _cells = CCArray::create();

    _cells->retain();

    for (inti = 0;i < 5; ++i)

    {

        //创举CCTableViewCell

        CCTableViewCell*cell =new CCTableViewCell;

        //放入存储CCTableViewCell的CCArray中去

        _cells->addObject(cell);

        cell->release();

 

        //每个格子中添加精灵

        CCSprite* sprite = CCSprite::create("HelloWorld.png");

        cell->addChild(sprite);

        sprite->setPosition(ccp(winSize.width / 2,winSize.height / 2));

    }

 

    //使用了回调

    CCTableView* view = CCTableView::create(this,winSize);

    addChild(view);

    //设置滚动的方向

    view->setDirection(kCCScrollViewDirectionHorizontal);

    //从数据源重新加载,视图将会被刷新

    view->reloadData();

 

    return true;

}

运行结果:


2 TableView响应和小格子tableView实现

T26TableView.h

#ifndef __T26TableView_H__

#define __T26TableView_H__

 

#include "cocos2d.h"

#include "cocos-ext.h"

#include "TBack.h"

USING_NS_CC;

USING_NS_CC_EXT;

 

class T26TableView :public TBack, public CCTableViewDataSource, public CCTableViewDelegate

{

public:

    CREATE_FUNC(T26TableView);

    bool init();

    static CCScene * scene();

 

    //数据源支持的虚函数

    CCArray* _cells;

 

    //获取指定的CCTableViewCell

    virtual CCTableViewCell* tableCellAtIndex(CCTableView *table,unsignedint idx)

    {

        return (CCTableViewCell*)_cells->objectAtIndex(idx);

    }

 

    //获取CCTableViewCell的个数

    virtual unsigned int numberOfCellsInTableView(CCTableView *table)

    {

        return _cells->count();

    }

 

    //获得Cell的大小,cctableView的某个格子的大小可以不一样

    virtual CCSize tableCellSizeForIndex(CCTableView *table,unsignedint idx) {

        CCLog("顺序是:idx = %d",idx);

       

        //当时第3个格子的时候相对其它的格子的空间大一下

        if (idx == 2)

        {

            return CCSize(80, 57);

        }

       

        return cellSizeForTable(table);

    }

 

    virtual CCSize cellSizeForTable(CCTableView *table) {

        return CCSize(57, 57);

    }

 

    //点击代理函数

    virtual void tableCellTouched(CCTableView*table,CCTableViewCell*cell)

    {

        CCLog("idx=%d",cell->getIdx());

    }

    virtual void scrollViewDidScroll(CCScrollView*view){}

    virtual void scrollViewDidZoom(CCScrollView*view){}

};

 

#endif

T26TableView.cpp

#include "T26TableView.h"

 

CCScene *T26TableView::scene()

{

    CCScene * scene = CCScene::create();

    T26TableView * layer = T26TableView::create();

    scene->addChild(layer);

    return scene;

}

 

bool T26TableView::init()

{

    TBack::init();

 

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

    CCSize cellSize = CCSize(57, 57);

 

    _cells = CCArray::create();

    _cells->retain();

    for (inti = 0;i < 5; ++i)

    {

        //创举CCTableViewCell

        CCTableViewCell*cell =new CCTableViewCell;

        //放入存储CCTableViewCell的CCArray中去

        _cells->addObject(cell);

        cell->release();

 

        //每个格子中添加精灵

        CCSprite* sprite = CCSprite::create("Icon.png");

        cell->addChild(sprite);

        sprite->setPosition(ccp(cellSize.width / 2,cellSize.height / 2));

    }

 

    //使用了回调

    CCTableView* view = CCTableView::create(this,CCSize(cellSize.width * 3,cellSize.height));

    addChild(view);

    //设置滚动的方向

    view->setDirection(kCCScrollViewDirectionHorizontal);

    //从数据源重新加载,视图将会被刷新

    view->reloadData();

    view->setPosition(ccp(200, 200));

 

    // 点击处理

    view->setDelegate(this);

 

    return true;

}

运行结果:


 

 

 

 

 

 

 

1CCTableView的使用,TableView响应和小格子tableView实现