AS3>在同一动态文本字段中使用不同的文本样式(粗体和常规)

时间:2012-09-12 23:18:57

标签: actionscript-3 flash fonts textfield

我多年来一直在使用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>.

1 个答案:

答案 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);