我多年来一直在使用as3,但每次我需要操作字体时我都会发疯:(
我的设置: 我通过代码填充了一个带有大量动态textFields的movieClip。它们的值来自外部XML。
我的问题: 我的客户想要在xml中插入html标签,在其中的一部分中加入粗体文本。例如,他们希望:“此字符串带有此部分粗体”。 Xml部分没问题,用CDATA格式化,依此类推。如果我跟踪来自xml的值是html,但它在文本字段中显示为常规文本....
文本字段使用客户端自定义字体(非系统字体),并通过图形设计器在Flash中嵌入对话框面板嵌入字体。
任何帮助?
这是填充文本字段的代码的一部分(在for循环中)
var labelToWrite:String = labelsData.label.(@id == nameOfChildren)[VarHolder.activeLang];
if (labelToWrite != "") {
foundTextField.htmlText = labelToWrite;
// trace ("labelToWrite is -->" +labelToWrite);
}
跟踪输出我
This should be <b>bold text with b tag</b> and this should be <strong>strong text </strong>.
答案 0 :(得分:1)
您的代码看起来不错。所以问题在于嵌入式字体。当您在Flash中嵌入字体时,它不会嵌入任何单独的粗体版本,因此您可能需要嵌入字体的粗体版本。
一些资源: Flash CS4 <b> tag in with htmlText
我发现通过使用样式表声明字体而不是文本格式,html文本效果最佳。
var style:StyleSheet = new StyleSheet();
style.setStyle(".mainFont", { fontFamily: "Verdana", fontSize: 50, color: "#ff0000" } );
var foundTextField:TextField = new TextField();
foundTextField.embedFonts = true;
foundTextField.autoSize = TextFieldAutoSize.LEFT;
foundTextField.antiAliasType = AntiAliasType.ADVANCED;
foundTextField.styleSheet = style;
foundTextField.htmlText = "<div class=\"mainFont\">" + labelToWrite + "</div>";
请参阅:flash as3 xml cdata bold tags rendered in htmlText with an embedded font
其他原因可能: 你是否嵌入了正确的字体类型(TLF vs CFF)? 如果没有使用flash IDE创建textField,是否注册了字体?
Font.registerFont(MyFontClass);