Label类的类图以下图所示:html
建立Label类静态create函数经常使用的有以下几个:缓存
[html] view plaincopy函数
static Label* createWithSystemFont(conststd::string &text, //是要显示的文字 字体
const std::string& font, //系统字体名 this
float fontSize, //字体的大小 spa
const Size& dimensions = Size::ZERO, //在屏幕上占用的区域大小,可省略 .net
TextHAlignment hAlignment = TextHAlignment::LEFT, //文字横向对齐方式,可省略 代理
TextVAlignment vAlignment = TextVAlignment::TOP) //文字纵向对齐方式,可省略 code
static Label* createWithTTF(conststd::string & text, orm
const std::string & fontFile, //字体文件
float fontSize,
const Size & dimensions = Size::ZERO, //可省略
TextHAlignment hAlignment= TextHAlignment::LEFT, //可省略
TextVAlignment vAlignment= TextVAlignment::TOP //可省略
)
static Label* createWithTTF(constTTFConfig& ttfConfig,
const std::string& text,
TextHAlignment alignment =TextHAlignment::LEFT,
int maxLineWidth = 0
)
static Label* createWithBMFont(conststd::string& bmfontFilePath, //位图字体文件
const std::string& text,
const TextHAlignment& alignment =TextHAlignment::LEFT, //可省略
int maxLineWidth = 0, //可省略
const Point& imageOffset = Point::ZERO //可省略
)
其中createWithSystemFont是建立系统字体标签对象,createWithTTF是建立TTF字体标签对象,createWithBMFont是建立位图字体标签对象。
下面咱们经过一个实例介绍一下,它们的使用。这个实例如图下图所示。
下面咱们看看HelloWorldScene.cpp中init函数以下:
[html] view plaincopy
bool HelloWorld::init()
{
if ( !Layer::init() )
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Point origin = Director::getInstance()->getVisibleOrigin();
auto closeItem = MenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
closeItem->setPosition(Point(origin.x+ visibleSize.width - closeItem->getContentSize().width/2 ,
origin.y + closeItem->getContentSize().height/2));
auto menu = Menu::create(closeItem, NULL);
menu->setPosition(Point::ZERO);
this->addChild(menu, 1);
autolabel1 = Label::createWithSystemFont("Hello World1","Arial", 36); ①
label1->setPosition(Point(origin.x+ visibleSize.width/2,
origin.y + visibleSize.height - 100));
this->addChild(label1,1);
autolabel2 = Label::createWithTTF("Hello World2", "fonts/MarkerFelt.ttf", 36); ②
label2->setPosition(Point(origin.x+ visibleSize.width/2,
origin.y + visibleSize.height - 200));
this->addChild(label2,1);
autolabel3 = Label::createWithBMFont("fonts/BMFont.fnt", "HelloWorld3"); ③
label3->setPosition(Point(origin.x+ visibleSize.width/2,
origin.y + visibleSize.height - 300));
this->addChild(label3,1);
TTFConfigttfConfig("fonts/Marker Felt.ttf",
36,
GlyphCollection::DYNAMIC); ④
autolabel4 = Label::createWithTTF(ttfConfig, "Hello World4"); ⑤
label4->setPosition(Point(origin.x+ visibleSize.width/2,
origin.y + visibleSize.height - 400));
this->addChild(label4, 1);
ttfConfig.outlineSize= 4; ⑥
autolabel5 = Label::createWithTTF(ttfConfig, "Hello World5"); ⑦
label5->setPosition(Point(origin.x+ visibleSize.width/2,
origin.y + visibleSize.height - 500));
label5->enableShadow(Color4B(255,255,255,128),Size(4, -4)); ⑧
label5->setColor(Color3B::RED); ⑨
this->addChild(label5,1);
return true;
}
在上面的代码中第①是经过createWithSystemFont函数建立Label对象,第②行代码是经过createWithTTF是建立TTF字体标签对象,第③行代码是createWithBMFont是建立位图字体标签对象。
第④行代码TTFConfig ttfConfig("fonts/Marker Felt.ttf", 36, GlyphCollection::DYNAMIC)是建立一个TTFConfig结构体变量,TTFConfig结构体的定义以下:
[html] view plaincopy
_ttfConfig(constchar* filePath = "", //字体文件路径
int size = 12, //字体大小
constGlyphCollection& glyphCollection = GlyphCollection::DYNAMIC, //字体库类型
constchar * customGlyphCollection = nullptr, //自定义字体库
booluseDistanceField = false, //用户是否可缩放字体
intoutline = 0 //字体描边
)
第⑤行代码Label::createWithTTF(ttfConfig,"Hello World4")是经过指定TTFConfig建立TTF字体标签。第⑥行代码ttfConfig.outlineSize = 4设置TTFConfig的描边字段。第⑦行代码Label::createWithTTF(ttfConfig,"Hello World5")是从新建立TTF字体标签。
第⑧行代码label5->enableShadow(Color4B(255,255,255,128),Size(4, -4))是设置标签的阴影效果。第⑨行代码label5->setColor(Color3B::RED)是设置标签的颜色。
[1] FreeType库是一个彻底免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件。——引自于百度百科http://baike.baidu.com/view/4579855.htm