带有 htmlText 的 Flash CS4 <b> 标记

Posted

技术标签:

【中文标题】带有 htmlText 的 Flash CS4 <b> 标记【英文标题】:Flash CS4 <b> tag in with htmlText 【发布时间】:2011-01-22 18:18:33 【问题描述】:

哇,这个真的很奇怪。

我有以下设置:

舞台上有两个文本字段,带有 Arial 普通和 Arial 粗体,均嵌入。然后我有另一个文本字段,我设置如下:

tb.htmlText = "Test <b>Test</b>";

由于某种原因,粗体文本不会显示为粗体,而是显示为常规粗体。我尝试使用 [Embed] 元标记将字体嵌入库中,甚至使用 CSS 来强制使用 fontFamily。奇怪的是,我可以使用 Font.enumurateFonts 并看到两种字体都嵌入了,但文本字段拒绝在 标签内使用粗体版本。

有人告诉我这是 Mac 上的 Flash CS4 的问题,它可以在 PC 上运行。然而,我拒绝相信这是事实。 Adobe 现在肯定会解决这个问题吗?

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

来自 Adob​​e:

粗体 b 标签将文本呈现为粗体。如果您使用嵌入字体,则该字体必须使用粗体字体,否则不会出现任何文本。如果您使用您希望驻留在用户本地系统上的字体,他们的系统可能会近似为粗体字体(如果不存在),或者它可能会替换普通字体而不是粗体。

尝试使用带有粗体的嵌入式字体。支持 b 标签。

【讨论】:

【参考方案2】:

您必须在字体列表中使用“粗体”字体(嵌入在相同或其他文本字段中):

var fonts:Array =  ( Font.enumerateFonts() );
for each( var fo in fonts )
   trace ( fo.fontName ,":", fo.fontStyle )

我认为如果你的字体样式返回为粗体,它可能应该没有问题。 这是一个解决方案:

var css:StyleSheet = new StyleSheet()
css.setStyle( "bold" ,  fontFamily:"Myriad Pro Bold"  ) // you can catch the fontname in the list that was printed by the code above...
txtfield.styleSheet = css;
txtfield.htmlText = "regular or<bold>bold font</bold>."

【讨论】:

【参考方案3】:

如果您有一个带有字体系列的动态文本字段,比如说“Abc”,并且您已经嵌入了 Abc 的 Regular 和 Abc 的 Bold 用于导出(它们将在您的库中列出),您仍然需要“强制" Flash 也可以导出粗体以供运行时使用。

如果您只有使用嵌入 Abc Regular 的文本字段,并且您设置了该文本字段的 htmlText 并且它显示为常规文本,Flash 很可能会跳过将 Abc Bold 嵌入到您的 swf 以供运行时使用,因为它没有查看它在任何文本字段上的使用情况。

您可以强制 Flash 也包括运行时的粗体,方法是在后台某处放置并清空带有嵌入 Abc Bold 的文本字段。

使用 queryt 的代码,字体列表应该包括嵌入的粗体,并在您的文本字段中正确显示。

【讨论】:

【参考方案4】:
v = v.split('<b>').join('<FONT FACE="Arial Bold">');
v = v.split('</b>').join('</FONT>');
textfield.htmlText = v;

并使用你的字体

【讨论】:

以上是关于带有 htmlText 的 Flash CS4 <b> 标记的主要内容,如果未能解决你的问题,请参考以下文章

Adobe Flash cs4 旋转数学

Flash CS4/AS3 动态文本框

如何使用 CS4 编译 Flash 11

Flash SDK 到 CS4 的转换技巧

Flash CS4,非活动按钮

flash cs4 文本框