在这个问题上,我被困了很长很长一段时间,这个问题已经被提过很多次了。这个任务还很简单,而且不应该花太多的时间:在文本字段中用一个嵌入的字体(除了Arial)用粗体加粗体。
B标记似乎只在使用Flash似乎识别粗体权重的字体时才起作用(Arial等)--但我使用的字体有4种权重:规则、中等、粗体和黑色。我需要黑体重量的粗体字在中等重量的正文。
我做了几十个测试,都失败了使用“经典”文本字段,为每个权重嵌入一次字体,并使用htmlText:在嵌入对话框中尝试了所有可能的设置,标记b、span、em -使用TextFormat (粗体、字体)或StyleSheet (fontWeight、fontStyle、fontFamily).
结论:在单个textField中无法设置2种不同的嵌入式字体。
这个问题肯定与字体的嵌入有关,通过以下调试帮助函数进行确认:
/**
* Debug helper: trace embedded fonts
*/
function trace_embedded_fonts():void
{
var fonts:Array = Font.enumerateFonts();
for ( var i:int = 0; i < fonts.length; i++ )
trace( fonts[ i ].fontName + " - " + fonts[ i ].fontStyle + " - " + fonts[ i ].fontType );
}
/**
* Debug helper: Trace format
*/
function trace_classic_textfield_format( tf:TextField ):void
{
trace( "trace_tlf_textfield_format( " + tf.name + " )" );
trace( " font = " + tf.getTextFormat().font );
}分别输出Maven Pro - regular - embedded (尽管我嵌入了字体的4倍,每重一次),而且是的:我仔细地命名了它们,并尝试导出actionscript、DF3和DF4,也没有导出它们),以及在场景中的所有textField实例上导出font = Maven Pro,无论是哪种样式都适用于它们(还尝试了选择嵌入式字体--末尾是* --也尝试了系统字体)。
总之,字体很奇怪,但我什么也做不了。
因此,我的问题涉及到新的文本布局框架(TLFTextField):它能用它实现吗?
文本是从XML加载的,包含em、b等简单标记,但是将它们重写为流标记不是一个选项。
我尝试了通过类似TextConverter类的var tf:TextFlow = TextConverter.importToFlow(hyperText, TextConverter.TEXT_FIELD_HTML_FORMAT); - cf进行转换。http://help.adobe.com/en_US/as3/dev/WS14c3067b34b57c6d4a97343b122ab36a52f-7ffb.html#WS14c3067b34b57c6d4a97343b122ab36a52f-7ff9 --但我不明白如何为每个标记设置样式,以及如何将TextFlow应用到已经在Flash上手动添加的TLF文本字段?
发布于 2011-10-12 09:26:16
为了获取信息,我放弃了使用TLFTextFields,并通过使用另一种字体来解决这个问题(其中一种字体是闪存理解的)--故事的寓意是,这个问题目前是对TextFields的一个残酷的限制。
还有一点:在舞台上动态添加的文本框中,粗体文本将无法工作,除非从一开始就有textfields (您需要使用的每种样式)出现在舞台上(我在白色bg上留下了两个带有“测试”的文本字段来隐藏它们)。
未来的注意:为这些问题制作视频“愤怒的视频游戏Nerd”。
https://stackoverflow.com/questions/7677551
复制相似问题