了解练习一下Label的基本使用和基本属性,话不多说直接上代码,场景接着使用上次的 。
对于需要说明的代码,已经打上注释。
#include "ThirdScene.h"
#include "HelloWorldScene.h"USING_NS_CC;
cocos2d::Scene * ThridScene::CreateScene()
{
CCScene * scene = CCScene::create();
ThridScene * layer = ThridScene :: create();
scene->addChild(layer);
return scene;}
bool ThridScene::init()
{
if (!Layer::init())
{
return false;
}获取可视区域尺寸大小;
//Size size = Director::sharedDirector()->getVisibleSize();
获取可视区域的原点位置;
//Point point = Director::sharedDirector()->getVisibleOrigin();
屏幕正中心位置;
//Point midPos = ccp(size.width/2,size.height/2);//开始精灵 精灵需要转换 startSpriteNormal ;
Sprite * startSpriteNormal = Sprite::create("fen.png");
Sprite * startSpriteSelected = Sprite::create("xiang.png");
MenuItemSprite * startMenuItem = MenuItemSprite::create(
startSpriteNormal,
startSpriteSelected,
CC_CALLBACK_1(ThridScene::EnterThridScene, this));
//create后面可以跟多个item 同时创建 但最后一个必须是空 参数;
Menu * menu = Menu::create(startMenuItem,NULL);
menu->setPosition(Director::getInstance()->convertToGL(Point(700, 170)));
this->addChild(menu);createLabel();
return true;
}
//跳转场景使用;
void ThridScene::EnterThridScene(Ref * ref)
{
Director::getInstance()->replaceScene(TransitionFade::create(1.5f, HelloWorld::createScene()));
}//创建Label;
//cocos2dX 提供了三种文字文本显示;
//LabelTTF(一般字体)每次改变文字就会有一个新的OpenGL纹理创建,所以需要频繁更新显示文字的时候而是使用其他两种 ;
//LabelAtlas(自定义字体)一般常用来显示数字信息,资源一般来自.png图片或.plist文件。也可以显示英文字符;
//LabelBMFont(自定义字体)使用之前需要添加好字体文件和图片文件,这两个文件名称必须一样;
//每个字母或符号都是单独的Sprite精灵可以使用getChildByTag(i)或getLetter(i)来获取第几个字符,单独设置字符的属性;void ThridScene::createLabel() {
//创建文本;
std::string strLabel = "Hello Word";//win下不支持中文;
//显示文本 字体资源 文本大小;
auto label = Label::create(strLabel, "calibri.ttf", 30);
this->addChild(label);//通过createWithSystemFont创建文本 ;
Label * labelSF = Label::createWithSystemFont(
"12345T", //内容;
"calibri.ttf", //字体资源;
30, //大小;
Size::ZERO, //尺寸;
TextHAlignment::LEFT, //水平对齐方式;
TextVAlignment::TOP); //垂直对齐方式;
labelSF->setPosition(300, 500);
this->addChild(labelSF);
通过createWithCharMap 创建 三种方式 .png创建、Texture2D创建、.plist创建;
//charMapFile 资源 宽 高 startCharMap 为ASCII码;
//staticLabel* createWithCharMap(conststd::string& charMapFile, int itemWidth, int itemHeight, int startCharMap);
//staticLabel* createWithCharMap(Texture2D* texture, int itemWidth, int itemHeight, int startCharMap);
//staticLabel* createWithCharMap(conststd::string& plistFile);
//.png;
//Label * labelPng = Label::createWithCharMap("da.png", 20, 20, '0');
//labelPng->setString("123456T");
//labelPng->setPosition(300, 400);
//this->addChild(labelPng);.plist;
//Label * labelPl = Label::createWithCharMap("da.png");Texture2D;
//Texture2D * texture = TextureCache::getInstance()->addImage("da.png");
//Label * labelTt = Label::createWithCharMap(texture, 20, 20, '0');
//labelTt->setString("T654321");
//labelTt->setPosition(500,300);
//this->addChild(labelTt);//通过TTF配置信息创建文本 字体资源 大小;
TTFConfig config("calibril.ttf",45);
label->setPosition(Director::getInstance()->convertToUI(Point(500,200)));
auto labelTTF = Label::createWithTTF(config, "HelloHelloHelloHelloHello");
labelTTF->setPosition(200, 500);
labelTTF->setColor(Color3B(0,255,250));
labelTTF->setScale(2);
加描边;
//labelTTF->enableOutline(Color4B(100, 30, 0, 30), 30);
加阴影;
//labelTTF->enableShadow();
是否发光;
//labelTTF->enableGlow(Color4B(255, 0, 0, 0));
//设置旋转;
//labelTTF->setRotation(30);
//透明度;
//labelTTF->setOpacity(45);
对齐方式 也可在创建时直接在参数中设置 还有其他方式 左对齐、 垂直、 默认是顶部对齐;
//labelTTF->setHorizontalAlignment(TextHAlignment::CENTER);
设置宽大小;
//labelTTF->setWidth(25);设置最大行宽, 内容超过就会自动换行;
//labelTTF->setMaxLineWidth(50);
自动换行;
//labelTTF->setLineBreakWithoutSpace(true);
设置行间距;
//labelTTF->setLineHeight(15);
改变字符串内容重新渲染;
//labelTTF->setString("LabelLabel");
获取长度 还有其他get ;
//int length =labelTTF->getChildrenCount();
设置锚点;
//labelTTF->setAnchorPoint(Vec2(0.5,0.5));
this->addChild(labelTTF);
}