2009-11-17 3 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에 렌더링되기를 원합니다.

감사합니다!

답변