Cocos2D创建多彩文本显示标签

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.

如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)



Cocos2D中默认的CCLableTTF类从源代码里看是支持多彩以及粗体之类的字符显示属性的,但可惜的是在最新的几版的cocos2D里,只能使用单色属性,否则App就会崩溃.

在Github中cocos2D的源代码里,可以看到各位大牛已经发现了这个问题,但是直到目前最新的Cocos2D 3.4.9中这个问题还未解决:

[iOS] Attributed String does not work in CCLabelTTF #1153

不过要注意的是Cocos2D 3.x早期几个版本是可以支持多彩标签的,虽然我不可能在跑去测试老的版本了.

不过我们可以用另外一种方法是标签支持多彩颜色,同样可以支持粗体和斜体,下划线之类的特殊效果.

以下是效果展示图:

核心代码如下:

//抽取并处理对话,如果已抽空所有对话则返回NO,否则返回YES.
-(BOOL)dryDialogue{
    NSString *dStr = _dAry[0];
    [_dAry removeObjectAtIndex:0];

    //如果对话不是命令则将对话内容显示在屏幕上,否则解析命令并执行.
    if (![self tryParseCmd:dStr]) {
        _dialogueBg.visible = YES;
        NSString *msg = [NSString stringWithFormat:@"%@ :%@",_npc.gcName,dStr];
        NSMutableString *mstr = [NSMutableString stringWithString:msg];
        NSArray *attrsAry = [self getStringAttrsAndTrimString:mstr];
        if (attrsAry.count > 0) {
            NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc]initWithString:mstr];
            for (NSDictionary *dict in attrsAry) {
                UIColor *color = [HyComm colorFromColorString:dict[@"Color"]];
                NSRange range = [dict[@"Range"] rangeValue];
                [attrString addAttribute:NSForegroundColorAttributeName value:color range:range];
            }
            _label.attributedText = attrString;
        }else{
            _label.text = msg;
        }
    }

    if (_dAry.count == 0) {
        return NO;
    }else{
        return YES;
    }
}
时间: 2024-10-07 06:29:14

Cocos2D创建多彩文本显示标签的相关文章

delphi Caption 垂直显示标签文本

//垂直显示标签文本 Label1.Caption:='垂'+#13+'直'+#13+'显'+#13+'示'; //使用相同的方法,我们也可以制作垂直显示的提示(Hint):button1.Hint:='垂'+#13+'直'+#13+'显'+#13+'示'; 来自为知笔记(Wiz) delphi Caption 垂直显示标签文本,布布扣,bubuko.com

css 溢出文本显示省略号

这个标题其实已经是一个老生常谈的问题了.很多时候,比如网站最基本的文章列表,标题会很长,而显示列表的区域宽度却没有这么宽,这时候最正常的做法就是 让超出宽度的部分文字用省略号(…)来表示.通常做法是网站后台程序截取一定的字符然后输出到前台显示或者前台用javascript截取一定的字符,但 是通过控制字数来截取的话还是存在一个大问题的,因为中文和英文的字符宽度问题,这个字数不好控制,而且通用性较差.那么有没有更好的方法呢,比如直接用 CSS来解决的,当然是有的. text-overflow是一个

超出文本显示省略号

对于大多数刚入门的程序员,都是不是太注重代码的细节,也就是写出来的代码不是太完善.有些我们设置的标签能放下6个字,后期我们又要加多几个字,又不能改变标签的宽度,又要保持外观样式的美观性,那我们怎么办的?下面我就给大家介绍一种超出文本显示用省略号代替的一种方法. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>省略号&

Django 中文乱码问题&amp;富文本显示

1.起源:从后台管理添加中文对象,正常,但是再次点击编辑的时候,抛出异常,显示编码问题. 解决:在项目的manage.py 的文件头部添加  import sys  reload(sys)  sys.setdefaultencoding('utf8') 确认有效. 2.正常富文本连着标签内容一起显示出来,需要将富文本放入如下代码中,就可以显示富文本效果了: {% autoescape off %} {{post.content}} {% endautoescape %}

1.2 文本相关标签

文本是网页不可缺少的元素之一,是网页发布信息所采用的主要形式.为了让网页中的文本看上去编排有序.整齐美观.错落有致,我们就要设置文本的大小.颜色.字体类型以及换行换段等. 本节单词记忆:标签 1.font 2.p 3.br 属性 1.color 2.size 3.face 4.align 网页学习网提示:html语言非常简单,不需要逻辑理解,而绝大部分朋友觉得它难以掌握,90%的原因在于英语单词不过关,所以每节记忆几个单词是非常有必要的. 一.字体字号相关标签 1.标题标签 标题能分隔大段文字,

第六十节,文本元素标签

文本元素标签 <b></b>表示关键字和产品名称如:<b>查看效果</b> 效果:加粗 查看效果 <strong></strong>表示重要的文字 如:<strong>查看效果</strong> 效果:加粗 查看效果 <br>强制换行如:<br>查看<br>效果效果:在浏览器显示换行 查看效果  <wbr>安全换行,一般只用于英文如:<wbr>查看&l

文本显示中的换行和省略号显示问题

在工作中经常会遇到文本显示的一些样式调整,今天就来说说文本显示的几个问题 . 一.强制换行的方法 1 word-break 是css3中的文本属性,规定非中日韩文本的换行规则,规定自动换行的处理方法,通过这个属性,可以让浏览器在特定的位置断行.w3c中有3个取值. word-break: normal|break-all|keep-all;normal是浏览器默认的自动换行的值.break-all 允许在单词内换行.keep-all 只能在半角空格或连字符处换行.但如果想断行的话,一定要设置宽度

ASP.NET - 演练:创建网页以显示 XML 数据

数据通常是以 XML 格式提供给 Web 应用程序的.但是,XML 数据本质上是分层的,因此您可能希望能够在基于列表的控件中使用 XML 数据,如 GridView 或 DropDownList 控件.此演练演示如何将 XML 数据视为表格数据库表中的数据进行处理. 通过此演练,您将学会如何执行以下任务: ·使用数据源控件读取 XML 数据并将数据提供给列表控件. ·将 GridView 和 DataList 控件绑定到 XML 数据. ·创建显示逻辑相关的 XML 数据的主详细信息页. ·对

Button 文本显示闪动问题解决

描述:定时器改变 UIButton 文本显示时出现闪动 ! 解决: 方案一:UIButton 的 UIButtonType 类型设置为 UIButtonTypeCustom .PS:使用Xib或SB创建 UIButton 时默认 UIButtonTypeSystem 类型 . 方案二:若  UIButtonType 已经设置 UIButtonTypeSystem 类型 ,titleLabel.text 与 setTitle 同时设置 . - (void)viewDidLoad { [super