2009-11-17 35 views
0

我需要顯示反鋸齒的系統字體(因爲swf文件大小必須很小,因此我無法嵌入字體)。所以,我以手動抗鋸齒文本Flash AS3 BitmapData.draw()影響文本格式化

代碼寫這個劇本:

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中,就像它出現在文本框中一樣

謝謝!

回答