CCTableView使用并解决乱序
来源:互联网 发布:编程语言最新排名 编辑:程序博客网 时间:2024/04/28 17:03
cctableview继承于CCScrollView和CCScrollViewDelegate,用于显示等宽高的元素.并支持滚动
test中的例子抽出来如下,并作修改,官方给的例子在拖拽之后会出现乱序
class TableViewTestLayer : public cocos2d::CCLayer, public cocos2d::extension::CCTableViewDataSource, public cocos2d::extension::CCTableViewDelegate{public:virtual void onEnter();virtual void onExit(); virtual bool init(); void toExtensionsMainLayer(CCObject *sender); CREATE_FUNC(TableViewTestLayer); virtual void scrollViewDidScroll(cocos2d::extension::CCScrollView* view); // 此函数不需要调用父类的函数,因为它是单独被调用的,当控件发生滚动时会发生,reloaddata也会发生。 virtual void scrollViewDidZoom(cocos2d::extension::CCScrollView* view) {} virtual void tableCellTouched(cocos2d::extension::CCTableView* table, cocos2d::extension::CCTableViewCell* cell); virtual cocos2d::CCSize cellSizeForTable(cocos2d::extension::CCTableView *table); // 返回每个元素的大小 virtual cocos2d::extension::CCTableViewCell* tableCellAtIndex(cocos2d::extension::CCTableView *table, unsigned int idx); // virtual unsigned int numberOfCellsInTableView(cocos2d::extension::CCTableView *table); // 返回此tableview中有多少个元素// when touching on the cell, it will highlightvirtual void tableCellHighlight(cocos2d::extension::CCTableView* table, cocos2d::extension::CCTableViewCell* cell); virtual void tableCellUnhighlight(cocos2d::extension::CCTableView *table, cocos2d::extension::CCTableViewCell *cell);};class CustomTableViewCell : public cocos2d::extension::CCTableViewCell{public:virtual void draw();};bool TableViewTestLayer::init(){ if ( !CCLayer::init() ) { return false; }CCSize winSize = CCDirector::sharedDirector()->getWinSize(); CCTableView* tableView = CCTableView::create(this, CCSizeMake(320, 30)); tableView->setDirection(kCCScrollViewDirectionHorizontal); tableView->setPosition(ccp(20,winSize.height/2-30)); tableView->setDelegate(this);//this->addChild(tableView);tableView->reloadData();tableView = CCTableView::create(this, CCSizeMake(60, 200));tableView->setDirection(kCCScrollViewDirectionVertical);//tableView->setPosition(ccp(winSize.width-150,winSize.height/2-120));tableView->setPosition(ccp(0 ,80));tableView->setDelegate(this);tableView->setVerticalFillOrder(kCCTableViewFillTopDown);this->addChild(tableView);tableView->reloadData();// Back MenuCCMenuItemFont *itemBack = CCMenuItemFont::create("Back", this, menu_selector(TableViewTestLayer::toExtensionsMainLayer));itemBack->setPosition(ccp(50, 25));CCMenu *menuBack = CCMenu::create(itemBack, NULL);menuBack->setPosition(CCPointZero);addChild(menuBack); return true;}void TableViewTestLayer::toExtensionsMainLayer(cocos2d::CCObject *sender){}void TableViewTestLayer::tableCellTouched(CCTableView* table, CCTableViewCell* cell){ CCLOG("cell touched at index: %i", cell->getIdx());}CCSize TableViewTestLayer::cellSizeForTable(CCTableView *table){ return CCSizeMake(60, 60);//return CCSizeMake(480, 320);}CCTableViewCell* TableViewTestLayer::tableCellAtIndex(CCTableView *table, unsigned int idx){CCLOG("tableCellAtIndex at index: %i", idx); CCString *string = CCString::createWithFormat("%d", idx); CCTableViewCell *cell = table->dequeueCell(); if (!cell) { cell = new CustomTableViewCell(); cell->autorelease(); } else {cell->removeAllChildrenWithCleanup(true); // 乱序在这里解决 }CCSprite *sprite = CCSprite::create("Icon.png");sprite->setAnchorPoint(ccp(0, 0));sprite->setPosition(ccp(0, 0));sprite->setTag(789);cell->addChild(sprite);CCLabelTTF *label = CCLabelTTF::create(string->getCString(), "Helvetica", 20.0);label->setPosition(CCPointZero);label->setAnchorPoint(CCPointZero);label->setTag(123);cell->addChild(label); return cell;}// 当前元素被选中的时候高亮显示void TableViewTestLayer::tableCellHighlight(CCTableView *table, CCTableViewCell *cell) { CCLOG(">>>>>>>>>>>>>>>>>>>>>>>>>tableCellHighlight<<<<<<<<<<<<<<<<<<<<"); //CCTexture2D *aTexture=CCTextureCache::sharedTextureCache()->addImage("HelloWorld.png"); CCSprite *pSprite=(CCSprite *)cell->getChildByTag(789); pSprite->setColor(ccc3(120, 120, 120));} void TableViewTestLayer::onEnter(){CCLayer::onEnter();}void TableViewTestLayer::onExit(){//CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);CCLayer::onExit();}// 取消元素高度显示void TableViewTestLayer::tableCellUnhighlight(CCTableView *table, CCTableViewCell *cell) { CCLOG(">>>>>>>>>>>>>>>>>>>>>>>>>tableCellUnhighlight<<<<<<<<<<<<<<<<<<<<"); CCTexture2D *aTexture=CCTextureCache::sharedTextureCache()->addImage("Icon.png"); CCSprite *pSprite=(CCSprite *)cell->getChildByTag(789); pSprite->setColor(ccc3(255, 255, 255));} unsigned int TableViewTestLayer::numberOfCellsInTableView(CCTableView *table){ return 20;}void TableViewTestLayer::scrollViewDidScroll(cocos2d::extension::CCScrollView* view){CCLOG("---> scrollViewDidScroll <--");}void CustomTableViewCell::draw(){CCTableViewCell::draw();}
- CCTableView使用并解决乱序
- cocos2d-x关于CCTableView的“乱序问题”的理解
- vim 使用技巧 set paste 解决粘贴乱序问题
- CCScrollView、CCTableView使用事例
- CCTableView使用注意事项
- CCTableView类的使用
- CCTableView的使用和注意事项
- 字符串转Map,解决字段乱序
- 使用Android Studio 练习RecyclerView 异步加载图片,解决图片乱序问题。
- cocos2d-x中CCTableView的使用
- cocos2d-x CCScrollView和CCTableView的使用
- cocos2d-x中CCTableView的使用
- cocos2d-x CCScrollView和CCTableView的使用
- cocos2d-x中CCTableView的使用
- 游戏项目中对CCTableView的使用
- Cocos2d-x 2.x:CCTableView的使用
- CCTableView使用中容易出错的问题
- 游戏项目中对CCTableView的使用
- Update语句更新多表时在SQL Server,Oracle,MySQL三种数据库中的用法
- 贪心--poj1862
- 关于jqgrid获取某一行某一列的值
- va_start/va_end函数-linux
- 快速幂模板
- CCTableView使用并解决乱序
- 2013计算机视觉代码合集一
- ASIHttpRequest:创建队列、下载请求、断点续传、解压缩
- ViewState使用兼谈序列化
- spring cron表达式
- Oracle百问百答(四)
- 23设计模式
- how to setup SSH on ubuntu
- 【C++模版之旅】静态多态(模版模拟多态)的讨论