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; }
最好实现的效果如下:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |