带有 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】:来自 Adobe:
粗体 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> 标记的主要内容,如果未能解决你的问题,请参考以下文章