最近准备做一个聊天系统,开始准备使用cocos2dx的UIRichText控件来显示聊天内容,结果在使用的时候才发现,cocos2dx的RichText功能非常有限,完全不具备实现聊天的功能,只实现了加入文本、图像和自定义控件的功能,支持不同字体、颜色、字号。 我个人认为,
最近准备做一个聊天系统,开始准备使用cocos2dx的UIRichText控件来显示聊天内容,结果在使用的时候才发现,cocos2dx的RichText功能非常有限,完全不具备实现聊天的功能,只实现了加入文本、图像和自定义控件的功能,支持不同字体、颜色、字号。
我个人认为,一个RichText控件应该具备以下基本功能:
1、多样化的文本显示功能,包括字体、颜色、字号的设置。
2、能显示图片以及一些特殊元素。
3、应该支持图片文字的超链接功能。
4、能够支持滚动的效果。
5、能够有很方便的换行功能,最好能设置行间距。
如果能够更好的实现聊天的功能,我觉得还需要加入以下功能:
1、文本特效:描边,下划线,阴影,发光等功能。
2、支持设置控件最大显示行数。
3、支持数据的分类显示,用于分频道显示聊天内容。
cocos2dx只实现了基础的1和2功能,所以考虑之后还是决定自己写一个RichText控件。UIRichText的框架还是不错的,实现了文本分行显示的技术。在他的基础上很容易扩展。
首先,扩展RichItem,用来支持多样化的文本需求。
其次,扩展Label控件,用于支持特殊的文字效果。
再次,需要实现滚动功能,控件继承UIScrollView。
最后,还需要对lua进行支持,包括使用功能以及超链接点击事件的注册。
以上是我实现控件的思路,这里就不贴代码了,很多,我会把我的控件代码共享给大家,大家在使用中有什么问题也可以向我咨询。
源代码在这里,cocos2dx-3.0功能强大的richText控件
最后贴一下使用的代码和效果图吧!
使用代码如下,我是在lua里面使用的,大家可以参考一下:
[plain]
view plaincopy
- function ChatUI:initRichEdit()
- local widget = self:getWidget()
- if widget then
- --创建小喇叭控件
- self._richBugle = ui.RichTextUI:create()
- self._richBugle:setSize(cc.size(940, 35))
- self._richBugle:setAnchorPoint(cc.p(0, 0))
- self._richBugle:setPosition(cc.p(100, 510))
- self._richBugle:setMaxLine(1)
- --创建聊天控件
- self._richChat= ui.RichTextUI:create()
- self._richChat:setSize(cc.size(940, 420))
- self._richChat:setAnchorPoint(cc.p(0, 0))
- self._richChat:setPosition(cc.p(20, 70))
- widget:addChild(self._richBugle)
- widget:addChild(self._richChat)
- local function callback(sender, eventType)
- if eventType == ui.RICHTEXT_ANCHOR_CLICKED then
- print(">>>>>>>>>>>addEventListenerRichText")
- end
- end
- self._richChat:addEventListenerRichText(callback)
- end
- end
- function ChatUI:addChatMsg(channel, roleName, chatMsg, signs)
- local richText = (channel == Channel_ID_Bugle) and self._richBugle or self._richChat
- if richText and channel and roleName and chatMsg then
- local ChannelNameSwitch =
- {
- [Channel_ID_Team] = "【队伍】",
- [Channel_ID_Privacy] = "【私聊】",
- [Channel_ID_Faction] = "【帮会】",
- [Channel_ID_World] = "【世界】",
- [Channel_ID_System] = "【系统】"
- }
- local ChannelColor =
- {
- [Channel_ID_Team] = Color3B.ORANGE,
- [Channel_ID_Privacy] = Color3B.ORANGE,
- [Channel_ID_Faction] = Color3B.ORANGE,
- [Channel_ID_World] = Color3B.ORANGE,
- [Channel_ID_System] = Color3B.WHITE,
- [Channel_ID_Bugle] = Color3B.ORANGE
- }
- local linkColor = Color3B.YELLOW
- local linklineColor = Color4B.YELLOW
- local outlineColor = Color4B.BLACK
- if channel == Channel_ID_Bugle then
- richText:insertNewLine()
- end
- if ChannelNameSwitch[channel] then
- local rc = ui.RichItemText:create(channel, ChannelColor[channel], 255, strg2u(ChannelNameSwitch[channel]), "DFYuanW7-GB2312.ttf", 25)
- rc:enableOutLine(outlineColor, 2)
- richText:insertElement(rc)
- end
- if channel ~= Channel_ID_System then
- local rcn = ui.RichItemText:create(channel, linkColor, 255, strg2u(roleName), "DFYuanW7-GB2312.ttf", 25)
- rcn:enableLinkLine(linklineColor, 1)
- rcn:enableOutLine(outlineColor, 2)
- richText:insertElement(rcn)
- chatMsg = ":" .. chatMsg
- end
- local rcm = ui.RichItemText:create(channel, ChannelColor[channel], 255, strg2u(chatMsg), "DFYuanW7-GB2312.ttf", 25)
- richText:insertElement(rcm)
- if channel ~= Channel_ID_Bugle then
- richText:insertNewLine()
- end
- end
- end
- function ChatUI:initComponent()
- self:addChatMsg(Channel_ID_Bugle, "王小二", "This is Bugle Msg")
- self:addChatMsg(Channel_ID_System, "", "This is System Msg")
- self:addChatMsg(Channel_ID_Team, "王小二", "This is Team Msg")
- self:addChatMsg(Channel_ID_World, "王小二", "This is World Msg")
- self:addChatMsg(Channel_ID_Faction, "王小二", "This is Faction Msg")
- self._channel = Channel_ID_World
- self:showChannel(Channel_ID_All)
- local btnChannel = self:getChild("Button_Channel")
- if btnChannel then
- btnChannel:setTitleText(strg2u("世界"))
- end
- end
最后是效果图:

随着互联网的发展,SEO(SearchEngineOptimization,搜索引擎优化)已经成为了网站优化的重要一环。如果您想要使您的PHP网站在搜索引擎中获得更高的排名,就需要对SEO的内容有一定的了解了。本文将会介绍如何在PHP中实现SEO优化,内容包括网站结构优化、网页内容优化、外部链接优化,以及其他相关的优化技巧。一、网站结构优化网站结构对于S

随着电子商务和企业管理的发展,许多企业开始寻找更好的方法来处理其日常业务流程。ERP系统是一种能够整合企业各种业务流程的软件工具。它提供了全面的功能,包括生产、销售、采购、库存、财务等方面,帮助企业提高效率、控制成本和提高客户满意度。而在PHP编程语言中,也能够实现ERP系统,这就需要我们掌握一些基本的知识和技术。下面,我们将深入探讨如何在PHP中实现ERP

随着企业的发展,客户管理变得越来越重要。为了提高客户满意度和忠诚度,越来越多的企业采用客户关系管理系统(CRM)来帮助其管理客户关系。而PHP是一种流行的编程语言,因其简单易学、灵活和强大而被广泛应用于Web开发。那么,如何在PHP中实现CRM系统呢?本文将为您介绍实现CRM系统的步骤和技巧。Step1:需求分析在开始开发CRM系统之前,您需要进行需求分析

随着物联网技术的发展和普及,越来越多的应用场景需要使用PHP语言进行物联网开发。PHP作为一种广泛应用于Web开发的脚本语言,它的易学易用、开发速度快、可扩展性强等特点,使其成为开发物联网应用的一种优秀选择。本文将介绍在PHP中实现物联网开发的常用技术和方法。一、传输协议和数据格式物联网设备通常使用TCP/IP或UDP协议进行数据传输,而HTTP协议是一个优

随着互联网的发展,轮播图已经成为了网页设计中必不可少的一部分。在很多网页中,轮播图经常被用作展示企业文化、最新产品或是推广活动等场景。本篇文章将会分享如何使用PHP来实现轮播图的功能。一、轮播图的概念轮播图是网页中一种常见的视觉效果,一般由多个图片组成,在页面中自动或手动进行切换,展示多个内容。可以添加符合业务要求的动画效果,有助于引起用户的关注和提高网站的

随着互联网的不断发展,越来越多的网站需要使用验证码来保证安全性。验证码是一种借助人类能力而无法被计算机破解的认证技术,广泛应用于网站注册、登录、找回密码等功能中。下面将介绍如何使用PHP实现验证码功能。一、生成验证码图片验证码图片的生成是验证码功能的核心,需要生成一个随机字符,并将其渲染为图像展示给用户。在PHP中,可以使用GD库来生成图片。GD库是一种用于

管家婆系统在现代企业管理中扮演着重要的角色,它不仅仅能够有效地提高企业的工作效率,还可以大大提高了企业的生产力和竞争力。与此同时,PHP作为一种广泛使用的动态脚本语言,也受到了许多企业的青睐。接下来,我们将探讨如何在PHP中实现管家婆系统,以提高企业的管理效率。一、了解管家婆系统管家婆系统是一种企业管理软件,主要用于管理公司的财务、销售、采购、仓库、人力资源

智能合约(SmartContract)是一种基于区块链的自动化交易程序,可以实现自动化执行、验证和执行交易。智能合约可以减少交易中的人为干扰,提高交易的安全性和效率。在不同的区块链中,智能合约的实现方式略有不同。本文将介绍在PHP中如何实现智能合约。PHP是一种广泛使用的编程语言,特别适合Web开发。PHP有着成熟的开源生态系统,以及许多可靠的框架和库。在


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SublimeText3 English version
Recommended: Win version, supports code prompts!

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

Dreamweaver Mac version
Visual web development tools
