需求:显示这样的一段文字
1.黑色,<font color='#ff2211'>随便填的颜色</font>黑色。\n2.第二行了<font color='#ee2211'>随便填的颜色</font>
其中的font标签用来包裹要用其他颜色显示的文字。
实现:
addRichText: function(content) {
var richText = new ccui.RichText(); // 富文本控件
var lines = content.split("\n"); // 所有行
for(var i = 0; i < lines.length; i++) {
var line = lines[i]; // 待处理的行
var elemts = line.split(/<font color='(.*?)'>(.*?)<\/font>/); // 按正则模板对行进行分割
var color = cc.color.BLACK; // 默认颜色
for(var k = 0; k < elemts.length;) {
var e = elemts[k];
if(e[0] == "#") {
color = cc.color(e);
e = elemts[k + 1];
k += 2;
} else {
color = cc.color.BLACK;
k++;
}
var re = new ccui.RichElementText(i, color, 255, e, "res/ui/Font/zhunyuan.ttf", 30); // 符文本元素
richText.pushBackElement(re);
}
var re = new ccui.RichElementText(i, color, 255, "\n", "res/ui/Font/zhunyuan.ttf", 30); // 换行
richText.pushBackElement(re);
}
var detail_panel = this.rootUINode.getChildByName("detail_panel_1");
detail_panel.addChild(richText);
richText.ignoreContentAdaptWithSize(false);
richText.width = 455;
richText.height = 500;
richText.setAnchorPoint(cc.p(0.5, 0.5));
richText.setPosition(cc.p(detail_panel.getContentSize().width / 2, detail_panel.getContentSize().height / 2));
}