使用 setTextFormat 格式化文本很简单。但有没有任何情感方法来检索文本上的所有样式? getTextFormat 已知,但它不适用于格式不同的文本。有什么想法吗?
答案 0 :(得分:0)
至少可以说这是很多工作。
我建议您使用现有的富文本编辑器插入解决方案,例如obedit:http://www.oblius.com/projects/obedit/(donationware)
好的,在回复您的评论时,您可以通过实施样式化文本标准来编写富文本编辑器,例如文本/丰富的MIME内容类型(http://tools.ietf.org/html/rfc1896),或者更可能的是,富文本格式({ {3}})。您也可以使用HTML或创建自己的语法。
假设用户输入The quick brown fox jumps over the lazy dog.
用户突出显示“快速”并单击粗体按钮(您提供),突出显示狐狸并将前景更改为红色(使用您提供的颜色选择器)。从视图中隐藏,您可以将数据字段的值更改为The \bquick\b brown \{color:red}fox\{\color} jumps over the lazy dog.
现在用户突出显示整行并将其设置为绿色。您将隐藏值更改为\{color:green}The \bquick\b brown fox jumps over the lazy dog.\{color}
请注意,您必须解析该行以识别并删除冲突的颜色标记。如果用户想要撤消该更改,该怎么办?你用红狐狸保存了这个版本吗?当用户在行尾输入新文本时,您是否认为插入符号位于绿色标记的内部或外部?
当您重新加载该值时,您必须再次解析该行,然后将所有格式转换为Flash可以显示的内容,剥离标记。
重新发明轮子并不是很有趣。
答案 1 :(得分:0)
正如您所说,getTextFormat
(beginIndex:int = -1, endIndex:int = -1)
只返回一个TextFormat
对象,其中填充了指定文本范围的格式信息(仅指定整个指定文本的属性)生成的TextFormat
对象)。
如果您需要整篇文字的格式设置信息,请在致电TextField
后阅读setTextFormat
的{{3}}属性。它包含文本字段内容的HTML表示。
var str:String = "The quick brown fox jumps over the lazy dog\n";
var tf:TextField = new TextField();
tf.multiline = true;
tf.text = str + str + str;
var f:TextFormat = new TextFormat("Arial", 15, 0xFF0000, true, false,
true, null, null, TextFormatAlign.CENTER);
tf.setTextFormat(f, 0, str.length);
f = new TextFormat("Courier New", 12, 0x00FF00, false, false,
false, "http://www.google.com", null, TextFormatAlign.LEFT);
tf.setTextFormat(f, str.length, 2 * str.length);
f = new TextFormat("Times New Roman", 12, 0x0000FF, false, true,
true, null, null, TextFormatAlign.RIGHT);
tf.setTextFormat(f, 2 * str.length, str.length * 3);
tf.width = 400;
tf.height = 300
addChild(tf);
trace(tf.htmlText);
输出结果为:
<P ALIGN="CENTER">
<FONT FACE="Arial" SIZE="15" COLOR="#FF0000" LETTERSPACING="0" KERNING="0">
<B>
<U>The quick brown fox jumps over the lazy dog</U>
</B>
</FONT>
</P>
<P ALIGN="LEFT">
<FONT FACE="Courier New" SIZE="12" COLOR="#00FF00" LETTERSPACING="0" KERNING="0">
<A HREF="http://www.google.com" TARGET="">The quick brown fox jumps over the lazy dog</A>
</FONT>
</P>
<P ALIGN="RIGHT">
<FONT FACE="Times New Roman" SIZE="12" COLOR="#0000FF" LETTERSPACING="0" KERNING="0">
<I>
<U>The quick brown fox jumps over the lazy dog</U>
</I>
</FONT>
</P>