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,而且放得太大再縮小,字也不好看。