CCTable Viewの乱順の使用と解決
5564 ワード
cctableviewは、等幅の要素を表示するためにCCScrollViewおよびCCScrollView Delegateに継承する.スクロールをサポート
testの例は以下のように抽出され、修正され、公式に与えられた例はドラッグすると乱序が現れる.
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 highlight
virtual 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 Menu
CCMenuItemFont *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();
}