cocos2d-x Label不同文字不同颜色
2016-09-04 14:18
1281 查看
前一段时间在cocos2d-x(3.7)项目中遇到一个需求要求实现Label中某些文字的高亮,也就是在一个Label中可以让文字有不同的颜色。看到这个需求我先是在网上找了很久都没有看到有用的信息,后来我就自己改造源码。 Label的原理基本是解析输入的字符串,然后根据字库信息解析字符串为每个字符生成一个对应的LetterInfo,最后根据LetterInfo信息将每个字符初始化一个Sprite(_reusedLetter)中,同时讲这个sprite绑定到_batchNodes(详细请参考Label::updateQuads)。 我改造Label源码的原理是在LetterInfo中添加了一个Color4B color记录每个字符的颜色,在Label中增加了一个颜色表和当前颜色。 struct LetterInfo { char16_t utf16Char; bool valid; float positionX; float positionY; int atlasIndex; int lineIndex; Color4B color;//字符颜色 bool bLockColor;//颜色锁,防止被setColor改变 };`
Label中添加`
public:
Color4B _curColor;//当前颜色
bool _bLockColor;//是否锁定
static std::vector colorList;//颜色表,size不要超过10
public:
static void setColorList(std::vector list);
static void addColor(Color3B color);
static std::vector getColorList();
static void clearColorList();
Label源码主要改动函数alignText,multilineTextWrapByWord,multilineTextWrapByChar和updateColor,详见我上传的Label源码资源(http://download.csdn.net/detail/xiaoshu_520/9621329)
测试代码先设置Label颜色表
Label::addColor(Color3B(255,0,0));//红
Label::addColor(Color3B(255,255,128));//黄色
Label* lable1 = Label::create();
lable1->setString(“Test [c0]Label [/]Color”);
[c0]表示从这才开始后面的字符都是红色,直到[/]或者文本结束。
(颜色表中红色索引是0,黄色索引是1)
相关文章推荐
- 设置UIButton中的文字和图片,设置UILabel的文在显示不同颜色
- Android编程实现控件不同状态文字显示不同颜色的方法
- Android TextView 实现文字大小不同和文字颜色不同
- 给部分文字设置不同颜色
- TextView的图文混排,不同文字颜色混排
- Android TextView不同文字显示不同颜色
- 设置UIButton中的文字和图片,设置UILabel的文在显示不同颜色
- TextView通过Html,实现一行文字,颜色不同等显示
- iOS开发-同一段文字显示不同颜色
- phpcms中实现标签文字显示不同颜色
- 同一TextView 上的文字设置不同的颜色,大小等
- ios Label显示不同颜色文字
- Mac 终端—不同文件不同颜色显示,提示文字
- android 改变文字颜色,点击切换不同的颜色
- uilabel 文字修改为不同颜色
- 同一个TextView如何显示不同颜色的文字、字体大小、字体样式
- 使用富文本在lable上展示不同颜色的文字,自定义label高度,自定义行间距
- 同一个TextView中设置不同颜色与文字大小
- Android TextView 实现文字大小不同和文字颜色不同
- div+css - table中直接输入的文字和其他标记设置不同的颜色