【发布时间】:2010-08-19 13:54:52
【问题描述】:
我正在使用 actionript 3 和 flex 3.5。有没有办法在不使用“htmlText”属性的情况下更改 TextArea 控件中部分文本的字体颜色?
例如,我有一个字符串“狗、猫、鱼”。我想将“猫”字的颜色更改为红色。有可能吗?
【问题讨论】:
标签: apache-flex flash actionscript-3
我正在使用 actionript 3 和 flex 3.5。有没有办法在不使用“htmlText”属性的情况下更改 TextArea 控件中部分文本的字体颜色?
例如,我有一个字符串“狗、猫、鱼”。我想将“猫”字的颜色更改为红色。有可能吗?
【问题讨论】:
标签: apache-flex flash actionscript-3
如果您已经有办法定位字符,那么您只需要TextFormat 和TextField 类即可实现此目的。 TextFormat 类允许您为字段定义样式...
var format:TextFormat = new TextFormat();
format.font = "Helvectica";
format.size = 14;
format.color = 0xFFCC00;
format.leading = 2;
然后,您可以使用...在 TextField 中的文本子集上设置该格式。
var field:TextField = new TextField();
field.text = "fish cat dog rat"
field.setTextFormat( format, 6, 12 )
... 其中 6 是开始格式化的索引,而 12 是结束格式化的索引。
如果您无法确定格式的起点和终点,我建议您使用正则表达式。
【讨论】:
最好扩展 TextArea 并在子类中受保护的 textField 属性上执行您想要的操作。
但您可以采取几个步骤从 TextArea 获取 textField。这是您需要的一些代码:
import mx.core.IUITextField;
import mx.core.mx_internal;
use namespace mx_internal;
var tf:IUITextField = textArea.getTextField();
mx_internal 是访问 getTextField() 所必需的,您必须使用 IUITextField 作为 flex 包装 flash.text.TextField。它具有相同的界面和更多功能,因此您可以应用 Jeremy 的答案中的示例。
【讨论】: