Flex用BitmapData實現文本旋轉

    Flex的DisplayObject類 有一個rotation屬性,通過它可以現實可視化組件的旋轉,使用起來應該非常方便,所以一開始想到了用rotation現實文本的旋轉。沒想到用rotation一旋轉(比如轉個90度),文本就不見了;我把旋轉角度改小一點(改爲1度),文本總算又出來了,不過用scaleX一放大,它又不見了。

    請教高手,說是字體的問題,要嵌入字體。不過漢字太多了,嵌入字體的.ttf文件體積可觀,有點得不償失。聽人說可以動態XXX,好像是local……,不過我弄了半天也沒弄出來。哎,鬱悶!

    還是用BitmapData吧,雖然放大後有點難看,不過不用嵌入字體,可以爲程序減肥。代碼如下:

  

注意事項:

1、 要判斷textfield的寬和高是否超過2880 像素,因爲BitmapData 對象的最大寬度和高度爲 2880 像素,如果指定的寬度值或高度值大於 2880,則不會創建新實例,而且會遇到各種意想不到的問題,爲了這個問題,我折騰了半天。

   var bw:Number = textfield.width;
   var bh:Number = textfield.height; 
   if(textfield.width>2880 )
   {
    textfield.scaleX *= 2880/textfield.width;
    bw = 2880;     
   }      
   if(textfield.height>2880)
   {     
    textfield.scaleY *= 2880/textfield.height;
    bh = 2880;
   }
   
    var myBitmapData:BitmapData = new BitmapData(bw, bh, true,0);

 

2、不要企圖直接給textfield.width或textfield.height賦值,下面的代碼是沒有意義的:

   if(textfield.width>2880)

   {
    textfield.width = 2880;    
   }      
   if(textfield.height>2880)
   {
    textfield.height = 2880;  
   }

因爲加了textfield.autoSize = TextFieldAutoSize.LEFT後,textfield.width、textfield.height的值就固定了,給它們賦值也不會改變;即使textfield.scaleX或textfield.scaleY改變,textfield.width、textfield.height的值也不會改變,我這裏用textfield.scaleX *= 2880/textfield.width;只是爲了調整文本的大小,以免文本轉化爲BitMap後發生截斷。

3、文本放大後會很難看,畫的時候可以先放大X倍,再縮小X倍,這樣放大後就好看些了。不過不要放得太大,否則超會過2880,而且放得太大再縮小,字也不好看。

發佈了24 篇原創文章 · 獲贊 7 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章