Cocos2dx之文字显示

C++之旅 QQ群:201704374

伸手党的救星,1T资料等你来战



一、显示文字的控件

1、cclabel

2、cclabelTTF

3、cclabelAtlas


二、文字显示实现

1、cclabel

#ifndef __T07cclabel_H__
#define __T07cclabel_H__
#include "cocos2d.h"
USING_NS_CC;

class T07cclabel : public cclayer
{
public:
	static CCScene* scene();
	CREATE_FUNC(T07cclabel);
	bool init();
	bool ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent);
	void ccTouchMoved(CCTouch *pTouch,CCEvent *pEvent);
};

#endif

#include "T07cclabel.h"

static const char* _font[] = {
	"AppleGothic","HiraKakuProN-W6","HiraKakuProN-W3","MarkerFelt-Thin","STHeitiK-Medium","STHeitiK-Light","TimesNewRomanPSMT","Helvetica-Oblique","Helvetica-Boldoblique","Helvetica","Helvetica-Bold","TimesNewRomanPS-BoldMT","TimesNewRomanPS-BoldItalicMT","TimesNewRomanPS-ItalicMT","Verdana-Bold","Verdana-BoldItalic","Verdana","Verdana-Italic","Georgia-Bold","Georgia","Georgia-BoldItalic","Georgia-Italic","ArialRoundedMTBold","TrebuchetMS-Italic","TrebuchetMS","Trebuchet-BoldItalic","TrebuchetMS-Bold","STHeitiTC-Light","STHeitiTC-Medium","GeezaPro-Bold","GeezaPro","Courier","Courier-Boldoblique","Courier-Oblique","Courier-Bold","ArialMT","Arial-BoldMT","Arial-BoldItalicMT","Arial-ItalicMT","STHeitiJ-Medium","STHeitiJ-Light","ArialHebrew","ArialHebrew-Bold","CourierNewPS-BoldMT","CourierNewPS-BoldItalicMT","CourierNewPSMT","Thonburi-Bold","AmericanTypewriter","AmericanTypewriter-Bold","STHeitiSC-Medium","STHeitiSC-Light","HelveticaNeue","HelveticaNeue-Bold","Zapfino"
};
CCScene* T07cclabel::scene()
{
	CCScene* scene = CCScene::create();
	T07cclabel* layer = T07cclabel::create();
	scene->addChild(layer);
	return scene;
}

bool T07cclabel::init()
{
	cclayer::init();
	CCSize winSize = CCDirector::sharedDirector()->getWinSize();
	
#if 0
	cclabelTTF* ttf = cclabelTTF::create("Content","Arial",24);
	addChild(ttf);
	ttf->setPosition(ccp(winSize.width/2,winSize.height/2));
#endif

	int count = sizeof(_font)/sizeof(*_font);
	for (int i =0; i < count; i++)
	{
		cclabelTTF* ttf = cclabelTTF::create(_font[i],_font[i],24);
		addChild(ttf);
		ttf->setPosition(ccp(winSize.width/2,i * 24 + 12));
	}

	setTouchEnabled(true);
	setTouchMode(kCCtouchesOneByOne);
	return true;
}
bool T07cclabel::ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent)
{
	return true;
}
void T07cclabel::ccTouchMoved(CCTouch *pTouch,CCEvent *pEvent)
{
	this->setPositionY(getPositionY() + pTouch->getDelta().y);
}

2、cclabelTTF

3、cclabelAtlas

#ifndef __T08cclabelAtlas_H__
#define __T08cclabelAtlas_H__

// cclabelTTF cclabelAtlas cclabelBMFont

#include "cocos2d.h"
USING_NS_CC;

class T08cclabelAtlas : public cclayer
{
public:
	static CCScene* scene();
	CREATE_FUNC(T08cclabelAtlas);
	bool init();

};

#endif
#include "T08cclabelAtlas.h"


CCScene* T08cclabelAtlas::scene()
{
	CCScene* s = CCScene::create();
	T08cclabelAtlas* layer = T08cclabelAtlas::create();
	s->addChild(layer);
	return s;
}

bool T08cclabelAtlas::init()
{
	cclayer::init();

	CCSize winSize = CCDirector::sharedDirector()->getWinSize();

	cclabelAtlas* atlas = cclabelAtlas::create("123abb123","labelatlasimg.png",24,32,'0');
	addChild(atlas);
	atlas->setPosition(ccp(winSize.width / 2,winSize.height / 2));

//	CCSprite* sp = CCSprite::create("Closenormal.png");
//	addChild(sp);
//	sp->setPosition(ccp(winSize.width / 2,winSize.height / 2));

	return true;
}


三、应用场合

1、cclabel

固定不变是文字显示

2、cclabelTTF

每个文字可以是精灵,经行精灵操作

3、cclabelAtlas

分数显示

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...