2011-06-05 44 views
0

我正在使用以下代碼從位圖上的textinput繪製文本。它能正常工作,除了不僅僅繪製文本而是繪製白色背景框內的文本之外的問題。如何在沒有框的情況下繪製文本?我猜它與透明度有關,所以我將Bitmapdata設置爲透明,但它仍然不起作用。位圖上的透明文本

     var m:Matrix = new Matrix(); 
      m.tx=100; 
      m.ty=100; 

      var txtMatrix:Matrix= new Matrix(); 
      txtMatrix.tx=bmd.width; 
      txtMatrix.ty=bmd.height+50; 


      original= new BitmapData(bmd.width+200,bmd.height+400,true,0x00000000); 
      original.draw(bmpMy,m); 


      var txtMatrix:Matrix= new Matrix(); 
      txtMatrix.tx=100; 
      txtMatrix.ty=bmd.height+105; 
      original.draw(txtTitle1,txtMatrix); 

注意:傳遞給'original'的BitmapData bmd也是透明的。 bmpMy是來自bmd的位圖BitmapData

+0

什麼是 'txtTitle1'?一個字符串?一個TextInput? mx還是Spark?它有皮膚嗎? – RIAstar 2011-06-05 15:42:01

+0

TextInput。定義爲: redGREENblue 2011-06-05 18:02:57

+0

您確定組件已初始化?只需使用標準文本框。 – ansiart 2011-06-06 16:19:06

回答

2

您正在使用默認的TextInputSkin繪製整個TextInput組件。由於此皮膚具有邊框和白色背景,因此它們也將被繪製。

我看到2個可能的解決方案:

  1. 可以創建一個普通的ActionScript文本字段,從將TextInput複製文本到文本字段,並繪製文本字段。繪製完成後,您可以處理TextField。

  1. 創建的TextInput自定義皮膚類沒有邊框,並用透明背景。您可能需要在運行時更改皮膚。你可以這樣做:

txtTitle.setStyle("skinClass", MyCustomTextInputSkin); 

當你完成drwing,恢復默認皮膚:

txtTitle.setStyle("skinClass", TextInputSkin);