1.在VS中設(shè)置 C++ 附加包含目錄編輯添加$(EngineRoot)這句話。
成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序制作、集團企業(yè)網(wǎng)站設(shè)計等服務(wù)項目。核心團隊均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗,服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:酒店設(shè)計等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗,同時也獲得了客戶的一致表揚!
2.引入頭文件,而不這樣寫的目的是為了解決安卓找不到tableview。在引入命令空間。
3.實現(xiàn)tableview的功能,首頁要共有繼承TableViewDataSource和TableViewDelegate兩個代理類。
4.實現(xiàn)下面的虛方法
virtual void scrollViewDidScroll(cocos2d::extension::ScrollView*view)override{};
virtual void scrollViewDidZoom(cocos2d::extension::ScrollView*view)override{}
virtual void tableCellTouched(cocos2d::extension::TableView*table,cocos2d::extension::TableViewCell*cell)override;
virtual cocos2d::Size tableCellSizeForIndex(cocos2d::extension::TableView*table,ssize_tidx)override;
virtual cocos2d::extension::TableViewCell* tableCellAtIndex(cocos2d::extension::TableView*table,ssize_tidx)override;
virtual ssize_t numberOfCellsInTableView(cocos2d::extension::TableView*table)override;
5.廢話不多說直接上代碼
#include"MenuColor.h"
#include"VisibleRect.h"
#include"GlobalDefine.h"
#include"GlobalArray.h"
USING_NS_CC;
MenuColor* MenuColor::create(floatwidth,floatheight)
{
automenucolor=new(std::nothrow)MenuColor();
if(menucolor&&menucolor->init(width,height))
{
menucolor->autorelease();
returnmenucolor;
}
else
{
CC_SAFE_DELETE(menucolor);
returnnullptr;
}
}
bool MenuColor::init(floatwidth,floatheight)
{
if(!LayerColor::initWithColor(Color4B(0,0,0,0),width,height))
{
returnfalse;
}
this->setAnchorPoint(Vec2::ZERO);
_color3b=Color3B(255,0,0);
_cellnum=-100;
//創(chuàng)建tableview
TableView* tableView=TableView::create(this,Size(120*resourceScale,height));
tableView->setDirection(ScrollView::Direction::VERTICAL);
tableView->setPosition(Vec2::ZERO);
tableView->setDelegate(this);
tableView->setDataSource(this);
tableView->setVerticalFillOrder(TableView::VerticalFillOrder::TOP_DOWN);
this->addChild(tableView);
tableView->reloadData();
this->setSwallowsTouches(false);
returntrue;
}
void MenuColor::tableCellTouched(cocos2d::extension::TableView*table,cocos2d::extension::TableViewCell*cell)
{
if(_cellnum>=1)
{
__Stringselect1=StringUtils::format("colorselect_%zd.png",_cellnum+10);
autocell2=(TableViewCell*)table->cellAtIndex(_cellnum-1);
if(cell2!=nullptr)
{
autoframe=getSpriteFrameByName(select1.getCString());
autosp2=Sprite::createWithSpriteFrame(frame);
cell2->removeAllChildren();
cell2->addChild(sp2);
sp2->setAnchorPoint(Vec2::ZERO);
sp2->setPosition(Vec2::ZERO);
sp2->setScale(resourceScale);
frame=getSpriteFrameByName("colorselect.pmg");
autosp=Sprite::createWithSpriteFrame(frame);
sp->setAnchorPoint(Vec2::ZERO);
sp->setPosition(Vec2(0,-4));
sp->setScale(resourceScale);
cell->addChild(sp,4,_cellnum);
_cellnum=(int)cell->getIdx();
}
else
{
autoframe=getSpriteFrameByName("colorselect.pmg");
autosp=Sprite::createWithSpriteFrame(frame);
sp->setAnchorPoint(Vec2::ZERO);
sp->setPosition(Vec2(0,-4));
sp->setScale(resourceScale);
cell->addChild(sp,4,_cellnum);
_cellnum=(int)cell->getIdx()+1;
}
}
else
{
_cellnum=(int)cell->getIdx()+1;
autoframe=getSpriteFrameByName("colorselect.png");
autosp=Sprite::createWithSpriteFrame(frame);
sp->setAnchorPoint(Vec2::ZERO);
sp->setPosition(Vec2(0,-4));
sp->setScale(resourceScale);
cell->addChild(sp,4,_cellnum);
}
intr=colorMap[cell->getIdx()][0];
intg=colorMap[cell->getIdx()][1];
intb=colorMap[cell->getIdx()][2];
_color3b=Color3B(r,g,b);
if(_colorDelegate!=nullptr)
{
_colorDelegate->setColor3B(_color3b);
}
}
Size MenuColor::tableCellSizeForIndex(cocos2d::extension::TableView*table,ssize_tidx)
{
returnSize(100*resourceScale,110*resourceScale);
}
TableViewCell* MenuColor::tableCellAtIndex(cocos2d::extension::TableView*table,ssize_tidx)
{
autocell=table->cellAtIndex(idx);
autoselect1=StringUtils::format("colorselect_%zd.png",idx+11);
if(!cell)
{
cell=new(std::nothrow)TableViewCell();
cell->autorelease();
autoframe=getSpriteFrameByName(select1.c_str());
autosprite=Sprite::createWithSpriteFrame(frame);
sprite->setAnchorPoint(Vec2::ZERO);
sprite->setPosition(Vec2(4*resourceScale,0));
sprite->setScale(resourceScale);
cell->addChild(sprite);
cell->setTag((int)idx+1);
}
returncell;
}
ssize_t MenuColor::numberOfCellsInTableView(cocos2d::extension::TableView*table)
{
return24;
}
void MenuColor::setDrawColorDelegate(ColorDelegate*delegate)
{
_colorDelegate=delegate;
}
Color3B MenuColor::getColor3B()
{
return_color3b;
}
但是根據(jù)某些需求不想要tableview自帶的彈簧效果,可以使用 tableView->setBounceable(false);來關(guān)閉彈簧效果。但是沒有了慣性。重寫下面的方法就可以解決這個問題
virtual void scrollViewDidScroll(cocos2d::extension::ScrollView* view)override {
//取消彈性
auto layout = view->getContainer();
float currentY = layout->getPositionY();
if(currentY > 0)
{
view->setContentOffset(cocos2d::Vec2(0,0));
}
if(-currentY > layout -> getContentSize().height - view -> getViewSize().height)
{