更改TextArea中文本的一部分的字体颜色

时间:2010-08-19 13:54:53

标签: flex flash actionscript-3

我正在使用actionsript 3和flex 3.5。有没有办法在不使用“htmlText”属性的情况下更改TextArea控件中文本部分的字体颜色?

例如我有一个字符串“狗,猫,鱼”。我想将“猫”字的颜色改为红色。有可能吗?

2 个答案:

答案 0 :(得分:4)

如果您已经有办法找到角色,那么您需要的只有TextFormatTextField类才能实现这一目标。 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是结束它的索引。

如果您无法确定格式的起点和终点,我建议您使用正则表达式。

答案 1 :(得分:2)

最好扩展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的答案中应用该示例。