文本字段可以包含纯文本或 HTML 格式的文本。纯文本存储在实例的 text 属性中,而 HTML 文本存储在 htmlText 属性中。
您可以使用 CSS 样式声明来定义可应用于多种不同文本字段的文本样式。CSS 样式声明可以在应用程序代码中进行创建,也可以在运行时从外部 CSS 文件中加载。
flash.text.StyleSheet 类用于处理 CSS 样式。StyleSheet 类可识别有限的 CSS 属性集合。有关 StyleSheet 类支持的样式属性的详细列表,请参阅“ActionScript 3.0 参考”中的 flash.textStylesheet 条目。
如以下示例所示,您可以在代码中创建 CSS,并使用 StyleSheet 对象对 HTML 文本应用这些样式:
var style:StyleSheet = new StyleSheet();
var styleObj:Object = new Object();
styleObj.fontSize = "bold";
styleObj.color = "#FF0000";
style.setStyle(".darkRed", styleObj);
var tf:TextField = new TextField();
tf.styleSheet = style;
tf.htmlText = "<span class = 'darkRed'>Red</span> apple";
addChild(tf);
创建 StyleSheet 对象后,示例代码创建一个简单对象以容纳一组样式声明属性。然后该代码调用 StyleSheet.setStyle() 方法,该方法将名为“.darkred”的新样式添加到样式表中。接着,代码通过将 StyleSheet 对象分配给 TextField styleSheet 属性来应用样式表格式设置。
要使 CSS 样式生效,应在设置 htmlText 属性之前对 TextField 对象应用样式表。
根据设计,带有样式表的文本字段是不可编辑的。如果您有一个输入文本字段并为其分配一个样式表,则该文本字段将显示样式表的属性,但不允许用户在其中输入新的文本。而且,您也无法在分配有样式表的文本字段上使用以下 ActionScript API:
TextField.replaceText() 方法
TextField.replaceSelectedText() 方法
TextField.defaultTextFormat 属性
TextField.setTextFormat() 方法
如果某个文本字段已经分配了一个样式表,但后来将 TextField.styleSheet 属性设置为 null,则 TextField.text 和 TextField.htmlText 属性的内容会向它们的内容中添加标签和属性,以结合先前分配的样式表设定的格式。若要保留原始 htmlText 属性,应在将样式表设置为 null 之前将其保存在变量中。