본문 바로가기
Cocos2D-x

ScrollView 간단 사용법

by CodeDiver 2014. 10. 6.

ScrollView 간단 사용법






////////////////////////////////////////////////////////////////////////////////

/// \brief      랭킹 표시

////////////////////////////////////////////////////////////////////////////////

 

void Ranking::drawRanking()

{

const int ROW_HIGHT = 40;


vector<RANKING> *pVec = &m_xmlParser.m_vecRanking;


int ySize = ROW_HIGHT * pVec->size();

CCSize size = CCSizeMake(630, ySize);


ccColor4B color4 = { 253,213,187,0 };

CCLayerColor* layer = CCLayerColor::create( color4 );

layer->setPosition( ccp(0, 0) );

layer->setContentSize( size );


RANKING t;

char szNo[10];


CCScrollView* scv = CCScrollView::create();

char szFont[] = {"fonts/BitmapFont.fnt"};

float fScale = 0.9f;


// TODO: 가져온 랭킹을 화면에 표시한다.

for( unsigned int i=0; i<pVec->size(); i++) {


t = pVec->at(i);


sprintf(szNo, "%d", i+1);

CCLabelBMFont* no=CCLabelBMFont::create(szNo, szFont);

//CCLabelTTF* no = CCLabelTTF::create(szNo, "Thonburi", 50);

no->setPosition( ccp(50, ySize - i*40 - 20));

no->setColor(ccMAGENTA);

no->setScale(fScale);

layer->addChild(no);

CCLabelBMFont* name=CCLabelBMFont::create(t.name,szFont);

name->setPosition( ccp(210, ySize - i*40 - 20));

name->setColor(ccGREEN);

name->setScale(fScale);

layer->addChild(name);


CCLabelBMFont* stage=CCLabelBMFont::create(t.stage, szFont);

stage->setPosition( ccp(400, ySize - i*40 - 20));

stage->setColor(ccORANGE);

stage->setScale(fScale);

layer->addChild(stage);


CCLabelBMFont* score=CCLabelBMFont::create(t.score, szFont);

score->setPosition( ccp(615, ySize - i*40 - 20));

score->setColor(ccGRAY);

score->setScale(fScale);

score->setAnchorPoint( ccp(1, 0.5f) );

layer->addChild(score);

}

// 아래의 순서가 중요하다. 바뀌면 비정상적으로 표시될 수 있다.

scv->setContainer( layer );

scv->setDirection(kCCScrollViewDirectionVertical); // 스크롤 방향

scv->setPosition(ccp(320, 195)); // 표시할 위치 (무조건 지정좌표에 좌하단이 위치한다.)

scv->setViewSize(CCSizeMake(630, 374)); // 보이는 영역크기

scv->setPageSize( CCSizeMake(0, ROW_HIGHT) ); // 중요!! 스크롤 정확하게 하려면 꼭 넣어야된다.

scv->setContentSize( size );

scv->setContentOffset(ccp(0, -ySize + 374));

scv->setDelegate(this);


this->addChild(scv, 5);

}