1

我已经使用 as3 很多年了,但每次我需要操纵字体时,我都会发疯:(

我的设置:我正在通过代码填充一个带有很多动态文本字段的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>.
4

1 回答 1

2

你的代码看起来不错。所以问题将出在嵌入式字体上。当您在 Flash 中嵌入字体时,它不会嵌入任何单独的粗体版本,因此您可能需要嵌入字体的粗体版本。

一些资源: 带有 htmlText 的 Flash CS4 <b> 标记

我发现使用样式表来声明字体而不是文本格式时,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>";

请参阅: 使用嵌入字体的 htmlText 中呈现的 flash as3 xml cdata 粗体标签

其他原因可能是:您是否嵌入了正确的字体类型(TLF 与 CFF)?如果不使用 flash IDE 来制作你的 textField,你是在注册字体吗?

Font.registerFont(MyFontClass);
于 2012-09-12T23:50:25.453 回答