当前位置: 首页 > news >正文

cocos2d-lua:Label的使用

目录

Description

创建系统字体的Label

创建TTF字体的Label

方式1

方式2


Description

在Cocos2d-x中,创建Label有四种方式:

系统字体:createWithSystemFont

TTF字体:createWithTTF

BMFont:createWithBMFont

CharMap:createWithCharMap

这里记录一下在Cocos2d-lua中创建系统字体和TTF字体Label的使用!

创建系统字体的Label

--[[ 
    static Label* createWithSystemFont(
        const std::string& text,  // 显示的文字内容
        const std::string& font,  // 字体文件或字体名称
        float fontSize,  // 字号(> 0)
        const Size& dimensions = Size::ZERO,  //尺寸,宽高(高度为0时自动换行)
        TextHAlignment hAlignment = TextHAlignment::LEFT,  // 水平对齐方式
        TextVAlignment vAlignment = TextVAlignment::TOP  // 垂直对齐方式
    );
 ]]

local systemLabel = cc.Label:createWithSystemFont(
    "PHP is the best language in the world !",
    "Arial",
    20,
    cc.size(150, 0),
    cc.TEXT_ALIGNMENT_LEFT,
    cc.VERTICAL_TEXT_ALIGNMENT_TOP
)
systemLabel:setAnchorPoint(0, 1)
systemLabel:setPosition(cc.p(0, 0))
parent:addChild(systemLabel)

创建TTF字体的Label

方式1

--[[ 
    static Label * createWithTTF(
        const std::string& text,
        const std::string& fontFilePath,  // ttf字体文件路径
        float fontSize,
        const Size& dimensions = Size::ZERO,
        TextHAlignment hAlignment = TextHAlignment::LEFT,
        TextVAlignment vAlignment = TextVAlignment::TOP
    );
 ]]

local ttfLabel = cc.Label:createWithTTF(
    "PHP is the best language in the world !",
    "res/fontFilePath.ttf",
    20,
    cc.size(150, 0),
    cc.TEXT_ALIGNMENT_LEFT,
    cc.VERTICAL_TEXT_ALIGNMENT_TOP
)
-- ttfLabel:setDimensions(150, 0)  -- 设置Label的尺寸,height为0时自动换行
ttfLabel:setLineHeight(30)  -- 设置行间距,不支持系统字体
ttfLabel:setAdditionalKerning(0)  -- 设置文字间距,不支持系统字体
print("rows->", ttfLabel:getStringNumLines())  -- 获取行数
print("height->", ttfLabel:getContentSize().height)  -- 获取Label实际的高度
ttfLabel:setAnchorPoint(0, 1)
ttfLabel:setPosition(cc.p(0, 0))
parent:addChild(ttfLabel)

方式2

--[[ 
    // TTFConfig结构体
    typedef struct _ttfConfig
    {
        std::string fontFilePath;
        float fontSize;

        GlyphCollection glyphs;  // 字符集
        const char *customGlyphs;

        bool distanceFieldEnabled;  // 是否让字体紧凑
        int outlineSize;  // 描边尺寸,描边颜色默认为黑色

        // 构造函数
        _ttfConfig(const std::string& filePath = "",float size = 12, const GlyphCollection& glyphCollection = GlyphCollection::DYNAMIC,
            const char *customGlyphCollection = nullptr, bool useDistanceField = false, int outline = 0)
            : fontFilePath(filePath)
            , fontSize(size)
            , glyphs(glyphCollection)
            , customGlyphs(customGlyphCollection)
            , distanceFieldEnabled(useDistanceField)
            , outlineSize(outline)
        {
            if(outline > 0)
            {
                distanceFieldEnabled = false;
            }
        }
    } TTFConfig;

    static Label* createWithTTF(
        const TTFConfig& ttfConfig,  // TTFConfig配置
        const std::string& text,
        TextHAlignment hAlignment = TextHAlignment::LEFT,
        int maxLineWidth = 0  // 最大行宽,用于自动换行,0表示不设置!
    );
 ]]

local ttfConfig = {}
ttfConfig.fontFilePath = "res/fontFilePath.ttf"
ttfConfig.fontSize = 20
-- ttfConfig.outlineSize = 2
local ttfLabel = cc.Label:createWithTTF(
    ttfConfig,
    "PHP is the best language in the world !",
    cc.TEXT_ALIGNMENT_LEFT,
    150
)
ttfLabel:setTextColor(cc.c4b(255, 0, 0, 255))  -- 设置文本颜色
ttfLabel:enableOutline(cc.c4b(0, 255, 0, 255), 2)  -- 设置描边
ttfLabel:setAnchorPoint(0, 1)
ttfLabel:setPosition(cc.p(0, 0))
parent:addChild(ttfLabel)

参考:cocos2dx[3.2](14)——新字体标签Label

相关文章:

  • win打开自带的画图工具
  • HR经理必备之IT术语
  • cocos2d-lua:XMLHttpRequest的使用
  • [啃书]身体使用手册 --《You:The owner's manual》
  • bat 概述
  • 圣诞节送给访问我BLOG的人
  • Lua实战之洗牌算法
  • Lua中loadstring的使用
  • 玩转“网上邻居”之浏览服务原理(一)
  • 玩转“网上邻居”之浏览服务原理(二)
  • cocos2d-lua:控件长按处理
  • 《网络工程师必读——网络系统设计》上市了
  • cocos2d-lua:控件翻转
  • 简单锁机脚本
  • cocos2d-lua:PageView的使用
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • Git同步原始仓库到Fork仓库中
  • Median of Two Sorted Arrays
  • mysql_config not found
  • Solarized Scheme
  • 前端设计模式
  • 使用 5W1H 写出高可读的 Git Commit Message
  • MyCAT水平分库
  • # Kafka_深入探秘者(2):kafka 生产者
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (poj1.2.1)1970(筛选法模拟)
  • (论文阅读40-45)图像描述1
  • (三)SvelteKit教程:layout 文件
  • (转)visual stdio 书签功能介绍
  • (转)四层和七层负载均衡的区别
  • (转)用.Net的File控件上传文件的解决方案
  • .NET Core中Emit的使用
  • .net framework4与其client profile版本的区别
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .net和php怎么连接,php和apache之间如何连接
  • .net开发引用程序集提示没有强名称的解决办法
  • @angular/cli项目构建--Dynamic.Form
  • @RestControllerAdvice异常统一处理类失效原因
  • [52PJ] Java面向对象笔记(转自52 1510988116)
  • [Android Pro] AndroidX重构和映射
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [BetterExplained]书写是为了更好的思考(转载)
  • [C#基础]说说lock到底锁谁?
  • [C++数据结构](22)哈希表与unordered_set,unordered_map实现
  • [GN] Vue3快速上手1
  • [hdu1561] The more, The Better 【树形DP】
  • [HTML]Web前端开发技术7(HTML5、CSS3、JavaScript )CSS的定位机制——喵喵画网页
  • [IE编程] 如何获得IE版本号
  • [iOS]随机生成UUID通用唯一识别码
  • [LeetCode] Minimum Path Sum
  • [leetcode]_Symmetric Tree
  • [node] Node.js 缓冲区Buffer
  • [Nuget]使用Nuget管理工具包
  • [POJ2104]K-th Number