cocos2dx tableview基础:实现多图片的滑动显示

通过tableview实现滑动显示26个字母图片,点击图片执行相应的动作。

tableview 需要继承TableViewDataSource(数据源),TableViewDelegate(触屏事件处理),同时实现其虚函数。

代码如下:

头文件TableViewTest.h如下


#ifndef __macstudycocos2dx__TableViewTest__

#define __macstudycocos2dx__TableViewTest__


#include <stdio.h>

#include "cocos2d.h"

#include "extensions/cocos-ext.h"


USING_NS_CC;

USING_NS_CC_EXT;


//void runTableViewTest();


class TableViewTest:publiccocos2d::Layer,publiccocos2d::extension::TableViewDataSource,publiccocos2d::extension::TableViewDelegate

{

public:

    

   static cocos2d::Scene* createScene();

    

   virtual bool init();

   void toExtensionMainLayer(cocos2d::Ref *sender);

    

    CREATE_FUNC(TableViewTest);

    

   virtual void scrollViewDidScroll(cocos2d::extension::ScrollView* view){};

    //重写滑动事件

   virtual void scrollViewDidZoom(cocos2d::extension::ScrollView* view){};

    //重写缩放事件

    

    //以下重写TableViewDataSource的虚函数

    virtualvoid tableCellTouched(cocos2d::extension::TableView* table,cocos2d::extension::TableViewCell* cell);

    //定义单元触碰事件

   virtual Size tableCellSizeForIndex(TableView *table,ssize_t idx);

    //定义单元的大小

   virtual TableViewCell* tableCellAtIndex(cocos2d::extension::TableView* table,ssize_t idx);

    //定义单元格

   virtual ssize_t numberOfCellsInTableView(cocos2d::extension::TableView* table);

    //定义单元格数量

    

};


#endif /* defined(__macstudycocos2dx__TableViewTest__) */


TableViewTest.cpp如下:


#include "TableViewTest.h"


Scene* TableViewTest::createScene()

{

    // 'scene' is an autorelease object

   auto scene = Scene::create();

    

    // 'layer' is an autorelease object

   auto layer = TableViewTest::create();

    

    // add layer as a child to scene

    scene->addChild(layer);

    

    // return the scene

   return scene;

}


bool TableViewTest::init(){

   if (!Layer::init()) {

        return false;

    }

   Size winSize=Director::getInstance()->getWinSize();

    

   TableView* tableView=TableView::create(this,Size(800,300));

    tableView->setDirection(ScrollView::Direction::HORIZONTAL);

    tableView->setPosition(Vec2(20,winSize.height/2-30));

    tableView->setDelegate(this);

   this->addChild(tableView);

    tableView->reloadData();

    return true;

    

}




void TableViewTest::tableCellTouched(cocos2d::extension::TableView* table,TableViewCell* cell){

    

    log("cell touched at index:%ld",cell->getIdx());

    

}


SizeTableViewTest::tableCellSizeForIndex(cocos2d::extension::TableView* table,ssize_t idx){

   return Size(300,150);

}


TableViewCell* TableViewTest::tableCellAtIndex(cocos2d::extension::TableView* table,ssize_t idx){

   auto letindex=idx+1;

   auto string=String::createWithFormat("let%ld.png",letindex);

   TableViewCell *cell=table->cellAtIndex(idx);

   if (!cell) {

        cell=newTableViewCell();

        cell->autorelease();


       auto sprite=Sprite::create(string->getCString());

        sprite->setAnchorPoint(Vec2::ZERO);

        sprite->setPosition(Vec2(0,0));

        cell->addChild(sprite);

        

       auto label=Label::createWithSystemFont(string->getCString(),"arial", 30);

        label->setPosition(Vec2::ZERO);

        label->setAnchorPoint(Vec2::ZERO);

        label->setTag(123);

        cell->addChild(label);

    }

   else{

       auto label=(Label*)cell->getChildByTag(123);

        label->setString(string->getCString());

        

    }

   return cell;

}



ssize_tTableViewTest::numberOfCellsInTableView(cocos2d::extension::TableView *table){

   return 26;

}


最好实现的效果如下:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值