cocos2d-x之 利用富文本控件解析xhml标签(文字标签,图片标签,换行标签,标签属性)...
执行后效果:
前端使用:
后台SuperRichText解析code
void SuperRichText::renderNode(tinyxml2::XMLNode *node){
while (node!=nullptr) {
if (node->ToText()) {
CCLOG("文本信息:%s",node->ToText()->Value());
auto n=node->ToText();
std::u16string text;
StringUtils::UTF8ToUTF16(n->Value(),text);
std::u16string::size_type pos=0;
pos=text.find('\n');
while ((pos!=std::u16string::npos)) {
text.erase(pos,1);
pos=text.find('\n',pos);
}
pos=0;
pos=text.find('\r');
while ((pos!=std::u16string::npos)) {
text.erase(pos,1);
pos=text.find('\r',pos);
}
std::string utf8Text;
StringUtils::UTF16ToUTF8(text,utf8Text);
auto font=_fontList[_fontList.size()-1];
auto textElement=ui::RichElementText::create(0,font.color,font.opacity,utf8Text,font.fontName,font.fontSize);
_line->pushBackElement(textElement);
}else if (node->ToElement()){
auto n=node->ToElement();
std::string name=n->Name();
std::transform(name.begin(),name.end(),name.begin(),::toupper);
if (name=="FONT") {
CCLOG("字体标签");
auto attr=n->FirstAttribute();
FontInfo newFont=_fontList[_fontList.size()-1];
while (attr!=nullptr) {
//遍历所有属性
std::string attrName=attr->Name();
std::transform(attrName.begin(),attrName.end(),attrName.begin(),::toupper);
if (attrName=="FACE") {
//设置字体
newFont.fontName=attr->Value();
}else if (attrName=="COLOR"){
//设置颜色
newFont.color=charToColor3B(attr->Value());
}else if(attrName=="SIZE"){
//设置大小
newFont.fontSize=attr->IntValue();
}else if (attrName=="OPACITY"){
//设置不透明度
newFont.opacity=attr->IntValue();
}
attr=attr->Next();
}
_fontList.push_back(newFont);//添加新字体
renderNode(n->FirstChild());//继续渲染子集
_fontList.pop_back();//移除新字体
}else if (name=="IMG") {
CCLOG("图片标签");
//图片标签的属性
auto attr=n->FirstAttribute();
const char *src;
Color3B col(255,255,255);
GLubyte opacity=255;
while (attr!=nullptr) {
//遍历所有属性
std::string attrName=attr->Name();
std::transform(attrName.begin(),attrName.end(),attrName.begin(),::toupper);
if (attrName=="SRC") {
//设置图片路径
src=attr->Value();
}else if (attrName=="COLOR"){
//设置颜色
col=charToColor3B(attr->Value());
}else if (attrName=="OPACITY"){
//设置不透明度
opacity=attr->IntValue();
}
attr=attr->Next();
}
auto img=ui::RichElementImage::create(0,col,opacity,src);
_line->pushBackElement(img);
}else if (name=="BR") {
CCLOG("换行标签");
addNewLine();
}
}
node=node->NextSibling();
}
}
转载于:https://www.cnblogs.com/daochong/p/5271079.html
cocos2d-x之 利用富文本控件解析xhml标签(文字标签,图片标签,换行标签,标签属性)...相关推荐
- MFC入门(三)-- MFC图片/文字控件(循环显示文字和图片的小程序)
惯例附上前几个博客的链接: MFC入门(一)简单配置:http://blog.csdn.net/zmdsjtu/article/details/52311107 MFC入门(二)读取输入字符:http ...
- MFC静态文本控件设置超链接
有时我们需要在窗口上设置一个超链接,比如在Aboutdlg上设置"我的博客"这样的超链接.具体的设置方法如下. 1.首先我们在窗体上添加一个Static文本控件,修改Caption ...
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应...
MFC小程序截图: 一.在MFC中简单使用WebBrowser的ActiveX插件的方法: 见博文: http://blog.csdn.net/supermanking/article/detail ...
- 初级软件实作 - 星便笺 - 之二 - 富文本控件扩展
便笺的主体做好了,最近一直觉得缺点儿什么,决定改变便笺的开发方向,把便笺做成一个开放平台. 开放平台好呀,只是缺点儿什么.什么呢?好的文本控件. 我希望文本控件能实现的功能: 纯正的文本控件 文字随意 ...
- python精要(82)-wxpython(3)-静态文本控件与状态栏
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Mon Feb 22 08:35:42 202 ...
- vue单位文本控件与vue加密文本控件
vue单位文本控件: 使用方式: npm install dami-text-input --save使用:<text-input v-model="test" :unit= ...
- Flutter的文本控件的基本使用
Flutter的文本控件的基本使用 import 'package:flutter/material.dart';void main(){runApp(MaterialApp(title: " ...
- bkwin设置文本控件为多行模式
2019独角兽企业重金招聘Python工程师标准>>> 指定textmode, 给到文本控件的区域 <class name="xxxxx" textmod ...
- c 用户控件 多语言,多语言文本控件重叠解决方案
多语言文本控件重叠解决方案 文本控件重叠问题分析 文本控件重叠解决方案制定 在cocostudio编辑中做好前期基础准备工作 使用UIHelper.bindUIWidget自动化绑定UI布局 视图自动 ...
最新文章
- docker-compose:使用docker-compose部署nginx+supervisor+uwsgi+flask程序(mongodb)
- mysql删除本机用户_mysql 不小心把root用户删除了,重建本地用户及远程用户
- [轉]MS SQL Server启用AWE用查看内存使用情况
- php中静态方法有什么作用,PHP中的静态方法与非静态方法有什么不同吗?
- PHP增删查改性能优化
- 外部数据源的使用汇总二
- mysql5.5启动报错:The server quit without updating PID file ([FAILED]localhost.localdomain.pid)....
- snap chrominu has install-snap change in progress
- EXCEL闪退的处理方法
- 希望能多看几遍找到自己的影子
- 用vuejs如何实现ajax,vuejs使用FormData实现ajax上传图片文件
- 英文对“ Big O”符号的解释是什么?
- shping cloud搭建大觅网-之sping cloud初体验
- 硬件-电子基础元器件(一)电阻
- (三)Android系统启动流程
- 【大学物理·早期量子论和量子力学基础】量子力学中的氢原子问题
- 避免怀疑跳槽,程序员该怎么请假?
- python--编写程序:实现乐手弹奏乐器,乐手可以弹奏不同的乐器而发出不同的声音------使用类的封装继承多态的问题/使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息
- SSO单点登录系统设计,数据库设计文档
- 2021MySQL面试题
热门文章
- QT下添加*.qrc(图标Icon、图像)资源
- 转 ajax.dll 与 ajaxpro.dll的用法
- Spring Cloud F Spring Boot 2.0 版本升级说明书
- String去重方法
- [Linux学习笔记] Linux常用命令 - 文件搜索命令
- SCCM 2012 R2 从入门到精通 Part11 系统推送(2)
- hdu 1874 畅通工程续(求最短距离,dijkstra,floyd)
- 2013年6月6日星期四
- GCC,GDB,Makefile
- 【自然框架】——重开在线演示