这个问题困扰了我很久。我一开始用TextField显示文字,大部分情况下是正常的,但是显示某些长字符串或者里面有些特殊标点符号的时候显示的很难看。想换字体,可惜TextFormat里面的font设置了根本没用。网上搜了很多都说要嵌入字体,这个很不靠谱,我flash本来就几十K,再来个几M的字体,那页面不得拖死。搜索了很多文章,有推荐用设备字体,研究了一下果然可以了。当然不支持跨平台,不过这个也够了。下面是一个示例代码,里面的字体可以设置成楷体、微软雅黑等,只要系统带了这个字体就行。
package { import flash.display.Sprite; import flash.text.engine.*; public final class FontSample extends Sprite { private var tb:TextBlock = new TextBlock(); private var te:TextElement; private var ef1:ElementFormat; private var ef2:ElementFormat; private var fd1:FontDescription = new FontDescription(); private var fd2:FontDescription; public function FontSample() { fd1.fontName = "微软雅黑"; fd1.fontLookup = FontLookup.DEVICE; ef1 = new ElementFormat(fd1); ef1.color = 0x000000; ef1.fontSize = 8; var str:String = "000001 之前17.1进的 现在被套着 看着这只股的均线错综复杂,现在该怎么办?情明示"; te = new TextElement(str, ef1); tb.content = te; var tx1:TextLine = tb.createTextLine(null,600); addChild(tx1); tx1.x = 0; tx1.y = tx1.height; /*fd2 = (fd1.locked) ? fd1.clone() : fd1; fd2.fontName = "Arial"; ef2 = (ef1.locked) ? ef1.clone() : ef1; ef2.fontDescription = fd2; tb.content.elementFormat = ef2; var tx2:TextLine = tb.createTextLine(null,600); addChild(tx2);*/ } } }