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-09-28 15:15:15

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

vb mschart 字体颜色-关于VB的MSChart控件中显示标签文本颜色的问题?

问题描述 关于VB的MSChart控件中显示标签文本颜色的问题? 我的目标是显示两条温度-时间曲线,一条是实际值(红色),一条是设定值(蓝色),两条线的颜色不同,字体与曲线颜色相同,显示完成后,红色的曲线中,有几个点的字体颜色为黑色,代码如下: With MSChart1 .ChartType = VtChChartType2dLine .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False .Plot.Axis(VtChAxisIdY).ValueSca

《网站建设与网页设计从入门到精通Dreamweaver+Flash+Photoshop+HTML+CSS+JavaScript》——第3章 Dreamweaver CS6创建基本文本网页3.1 Dreamweaver CS6工作环境

第3章 Dreamweaver CS6创建基本文本网页 Dreamweaver CS6是业界领先的Web开发工具,使用该工具可以高效地设计.开发和维护网站.利用Dreamweaver CS6中的可视化编辑功能,可以快速地创建网页而不需要编写任何代码,这对于网页制作者来说,工作变得很轻松.文本是网页中最基本和最常用的元素,是网页信息传播的重要载体.学会在网页中使用文本和设置文本格式对于网页设计人员来说是至关重要的. 学习目标 Dreamweaver CS6工作环境 掌握创建站点 掌握添加文本元素

《PhoneGap移动应用开发手册》——1.8节创建可视化罗盘显示设备的移动方向

1.8 创建可视化罗盘显示设备的移动方向PhoneGap移动应用开发手册PhoneGap API向开发者提供了获取设备的坐标信息及前进方向信息.开发者可以利用这些信息自定义一个罗盘工具来显示设备的移动. 实现步骤(1)创建HTML初始化框架,并添加需要脚本文件cordova-2.0.0.js的引用. (2)本例将以类名的方式调用DOM中的特定元素.为此我们使用XUI JavaScript库 (http://xuijs.com/).在head标签中添加script的引用包含该库. (3)创建scr

Word创建虚拟文本查看打印区域填满文字的效果

  在word中,有一个不常用的功能,那就是可以创建虚拟文本. 创建虚拟文本有什么好处呢?这是Word中的一个非正式的功能,用来创建虚拟文本来,以便从事新闻通讯或版面设计工作的用户在设计版面的过程中能看到整个版面填满文字时的效果. 你在Word97或Word2000正文中的空行里,输入"=rand(1,1)",回车后文档显示: The quick brown fox jum psover thel azy dog. 再输入=rand(1,2),回车后可看到: The quick bro

请教jsp中显示标签value

问题描述 请教jsp中显示标签value 在jsp中有文本框: 其中value用于显示内容,用安全软件扫描出问题后,说是需要用urlencode编码一下即可,于是改成如下: 但是页面显示出错,不知道这种情况下如何设置value值,请教了 解决方案 你用的是tomcat吗 解决方案二: 安全软件扫描是个什么东东?你的${username}包含有html标签什么的?如果是要将<和>替换为对应的实体对象<和> 解决方案三: 你request.setAtttibute("user

HTML超出文本显示省略号...通过text-overflow实现

HTML超出文本显示省略号在一些新闻列表中还是比较常见的一种做法,其实很简单通过text-overflow便可实现,有需要的朋友可以参考下本文   需要对div或者span同时应用Css: 复制代码 代码如下: text-overflow:ellipsis; white-space:nowrap; overflow:hidden; 即可实现所想要得到的溢出文本显示省略号效果. 当然了你的页面元素要设置固定的宽度,超出了宽度才会显示.         注:更多精彩教程请关注三联网页设计教程 栏目,

让ie11浏览器在单独一行上显示标签页的方法

  1.首先来看一下默认情况下ie11浏览器的标签页如下图所示: 2.当我们想改变时,可以鼠标右键,然后点击"单独一行上显示标签页"这一选项: 3.标签页就变成常见的一种显示模式了:

PHP获取一段文本显示点阵宽度和高度的方法

 这篇文章主要介绍了PHP获取一段文本显示点阵宽度和高度的方法,涉及imagettfbbox函数的用法及php操作ttf文字的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了PHP获取一段文本显示点阵宽度和高度的方法.分享给大家供大家参考.具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 define("F_SIZE", 8); define("F_FONT", "arial.ttf"

gui-该程序点击窗口后为什么放大窗口才能显示标签???求帮助!!

问题描述 该程序点击窗口后为什么放大窗口才能显示标签???求帮助!! package com.woaixuchen; import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseList