最近在做一聊天室,其一个功能是客户端可以设置自己的字体样式,像:
[color=#009999]【张三】[/color]对[color=#009999]【李四】[/color]说:你好!
[color=#009999]【李四】[/color]对[color=#009999]【张三】[/color]说:[color=#0000ff][size=18px]你好![/size][/color]
类似的这种情况,包括文字的颜色、字体、大小、加粗、斜体、下划线等等,客户端都可以自己设置字体样式然后发送给服务器,服务器再发送给各客户端。
我的实现方式有两种,但这两种都没有完全解决我的问题:
1。利用HTML代码:
[code="java"]
【张三】对【李四】说:你好!
【李四】对【张三】说:你好!
[/code]
这种方式像字体的颜色,大小都可以正常显示,但我设置加粗、斜体、下划线时,样式根本就没加载;我想可能flex不是完全支持html代码,于是就实验第二种方式,flex自己的样式标签
2。利用FLEX标签:
[code="java"]
【张三】/s:span对【李四】/s:span说:你好!
【李四】/s:span对【张三】/s:span说:你好!/s:span
[/code]
这种方式在做测试的时候,即直截在textarea中写的时候,字体样式能正常显示,如:
[code="java"]
【张三】/s:span对【李四】/s:span说:你好!
【李四】/s:span对【张三】/s:span说:你好!/s:span
/s:textarea
[/code]
但当我用函数从服务器端取到string(我用的是JAVA)数据,然后将该数据写到textarea中的时候(showContent.text = "从服务器曾端取到的字符串"),textarea中竟然连代码都显示出来了:
[code="java"]
【张三】/s:span对【李四】/s:span说:你好!
【李四】/s:span对【张三】/s:span说:你好!/s:span
[/code]
请问这是为什么?
大家是怎么解决这种现象的?
[b]使用[/b][color=brown][b]TextFlowUtil.importFromString[/b][/color] :D
[b]示例代码:[/b]
[color=darkblue][b]fx:Script<![CDATA[
import spark.utils.TextFlowUtil;
var markup:String =
"" +
"
" +
" 【张三】对【李四】说:你好!" +
"
" +
" 【李四】对【张三】说:你好!" +
"
" +
" 【下划线】对【斜体】说:粗体文字!" +
"
editable="false" width="400" horizontalCenter="0" verticalCenter="0" />[/b][/color]
showContent.value = "从服务器曾端取到的字符串"
我没有楼主这样写过 但可以提几点建议
可以使用text标签
感觉这种方式更加面向对象
一条聊天记录由三个text标签组成 每个标签的样式都是可以活改变的
前两个标签是聊天的双方 第三个是聊天内容 可以对聊天内容 进行更详细的设置
你所设置的属性 应该存入数据库 将文字的样式单独设置成一个pojo类
作为聊天记录的一个属性