我需要显示抗锯齿系统字体(因为 swf 文件大小必须很小,因此我不能嵌入字体)。所以我写了这个脚本来手动消除文本的锯齿
代码:
public function renderTextField():BitmapData{
var w:int = this["mainTextField"].textWidth+10;
var h:int = this["mainTextField"].textHeight+10;
var bitmapData:BitmapData = new BitmapData(w*3,h*3,false,0x000000);
var antialiased:BitmapData = new BitmapData(w,h,false,0x000000);
var transf:Matrix = new Matrix();
transf.scale(3,3);
bitmapData.draw(this["mainTextField"],transf);
var bitmap:Bitmap = new Bitmap(bitmapData,"auto",true);
transf = new Matrix();
transf.scale(1.0/3.0,1.0/3.0);
antialiased.draw(bitmap,transf,null,null,null,true);
return antialiased;
}
这工作得很好,但有一件讨厌的事情。有时绘图调用的缩放会影响文本格式。例如,一行的最后一个单词将改为下一行的第一个单词。这绝对不能发生!有谁知道它为什么会发生以及我如何避免它?我希望文本完全按照文本框中的显示方式呈现到 bitmapData
谢谢!