原文转自:http://2009315319.blog.51cto.com/701759/1420014
Cocos2d-x 3.0后推出了新的标签类Label,这种标签通过使用FreeType[1]来使它在不同的平台上有相同的视觉效果。由于使用更快的缓存代理,它的渲染也将更加快速。Label提供了描边和阴影等特性。
static Label* createWithSystemFont(conststd::string &text,//是要显示的文字
const std::string& font,//系统字体名
float fontSize,//字体的大小
const Size& dimensions = Size::ZERO,//在屏幕上占用的区域大小,可省略
TextHAlignment hAlignment = TextHAlignment::LEFT,//文字横向对齐方式,可省略
TextVAlignment vAlignment = TextVAlignment::TOP) //文字纵向对齐方式,可省略
static Label* createWithTTF(conststd::string & text,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 //可省略
)
下面我们看看
HelloWorldScene.cpp
中
init
函数如下:
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,128),Size(4,-4)); ⑧
label5->setColor(Color3B::RED); ⑨
this->addChild(label5,1);
return true;
}
_ttfConfig(constchar* filePath = "",//字体文件路径
int size = 12,//字体大小
constGlyphCollection& glyphCollection = GlyphCollection::DYNAMIC,//字体库类型
constchar * customGlyphCollection = nullptr,//自定义字体库
boolusedistanceField = false,//用户是否可缩放字体
intoutline = 0 //字体描边
)