美文网首页
cocos 2dx label源码阅读

cocos 2dx label源码阅读

作者: 许彦峰 | 来源:发表于2022-04-08 15:20 被阅读0次

    system, ttf(true type font)

    enum class LabelType {
            TTF, // createWithTTF
            BMFONT,
            CHARMAP,
            STRING_TEXTURE,// default
        };
    
    enum class LabelEffect {
        NORMAL,
        OUTLINE,
        SHADOW,
        GLOW,
        ITALICS,
        BOLD,
        UNDERLINE,
        STRIKETHROUGH, // 删除线
        ALL
    };
    

    STRING_TEXTURE

    使用系统将整个文字绘制成一张纹理,然后贴到sprite上渲染。
    Sprite* _textSprite;
    Sprite* _shadowNode;

    TTF

    • fontSize, outlineSize, fontName作为FontAtlas的key
    • fontAtlas将使用到的字符分别渲染到一个512512的texture上,如果这个texture满了,就再开辟一个512512的texture。
    • 根据fontAtlas的纹理数量,创建对等数量的SpriteBatchNode
    • 处理文本换行
    • 更新四边形顶点,将每个字符的信息更新到SpriteBatchNode
    • 渲染的时候先绑定纹理,然后将quads数据一次提交,完成最终的渲染

    CHARMAP

    按照anscii码的顺序依次罗列字母和对应的纹理,渲染时也借助了fontAtlas

    fontAtlas.texture的key就是plist文件名

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>version</key>
        <integer>1</integer>
        <key>textureFilename</key>
        <string>tuffy_bold_italic-charmap-hd.png</string>
        <key>itemHeight</key>
        <integer>128</integer>
        <key>itemWidth</key>
        <integer>96</integer>
        <key>firstChar</key>
        <integer>32</integer>
    </dict>
    </plist>
    
    

    BMFont

    和charmap同理,只是配置文件数据格式不太一样而已

    creator处理

    • render/utils/label/bmfont.js
    • render/utils/label/letter-font.js


    相关文章

      网友评论

          本文标题:cocos 2dx label源码阅读

          本文链接:https://www.haomeiwen.com/subject/iprysrtx.html