cocos2dX 学习笔记——Label的使用

时间:2024-03-28 22:10:44

了解练习一下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);
}

cocos2dX 学习笔记——Label的使用