我没有成功尝试将textFormat分配给同一个字符串的两个不同部分,但第二次没有注册并保持默认的文本格式。嵌入字体的两种样式(常规和粗体)。
//Create Text Field
private function createAboutWindowTextField():TextField
{
var aboutWindowFont:Font = new AboutWindowFont();
var regularFormat:TextFormat = new TextFormat();
var boldFormat:TextFormat = new TextFormat();
regularFormat.size = boldFormat.size = 12;
regularFormat.font = boldFormat.font = aboutWindowFont.fontName;
regularFormat.align = boldFormat.align = TextFormatAlign.CENTER;
boldFormat.bold = true;
var result:TextField = new TextField();
result.antiAliasType = AntiAliasType.ADVANCED;
result.autoSize = TextFieldAutoSize.LEFT;
result.defaultTextFormat = regularFormat;
result.embedFonts = true;
result.multiline = true;
result.selectable = false;
result.type = TextFieldType.DYNAMIC;
result.text = "First Header\n" +
"Version 1.0\n" +
"Copyright © 2011\n\n" +
"Second Header:\n" +
"Other info";
result.setTextFormat(boldFormat, result.text.indexOf("First Header"), ("First Header").length);
result.setTextFormat(boldFormat, result.text.indexOf("Second Header:"), ("Second Header:").length);
return result;
}
上面的代码应该导致“First Header”和“Second Header:”变为粗体,但只有“First Header”将被设置为粗体,而“Second Header:”似乎被简单地忽略。有什么问题?
答案 0 :(得分:2)
setTextFormat函数的第三个参数不正确。当你想获得结束索引时,你正在使用长度。像这样:
var indexA:int = result.text.indexOf("Second Header:");
result.setTextFormat(boldFormat, indexA, indexA + ("Second Header:").length);
我喜欢使用StyleSheet格式化具有多种字体或字体粗细的文本字段。它管理起来要容易一些。
var reg:HelveticaReg = new HelveticaReg();
var bold:HelveticaBold = new HelveticaBold();
var format:TextFormat = new TextFormat(reg.fontName, 14, 0x000000);
var ss:StyleSheet = new StyleSheet();
ss.setStyle(".bold", {fontFamily:bold.fontName});
var tf:TextField = new TextField();
tf.width = 400;
tf.multiline = true;
tf.wordWrap = true;
tf.autoSize = TextFieldAutoSize.LEFT;
tf.selectable = false;
tf.antiAliasType = AntiAliasType.ADVANCED;
tf.embedFonts = true;
tf.type = TextFieldType.DYNAMIC;
tf.defaultTextFormat = format;
tf.styleSheet = ss;
tf.htmlText = "<span class='bold'>Lorem ipsum dolor</span> sit amet, consectetur adipiscing elit.";
addChild(tf);