2012/3/16

Flash TextField Font Size Limit

Flash 的動態文字字型大小限制在 127 以下

以下實驗證明 flash 的動態文字字型大小是受限的
我用程式產生字型大小 116 ~ 130 的 TextField 並作滑鼠感應
當滑鼠移動到 TextField 上時顯示字型大小
證明字型大小最大只能到 127

demo
 http://dl.dropbox.com/u/7377053/flash/textFieldFontSizeTest.html

Source
http://dl.dropbox.com/u/7377053/flash/textFieldFontSizeTest.fla

code
 http://paste.plurk.com/show/948935/

tooltip.targetAlpha = 0;
var textFormat:TextFormat = new TextFormat();
function getTextField(size:int):TextField{
    var t:TextField = new TextField();
    t.text = "A";
    textFormat.size = size;
    t.selectable = false;
    t.setTextFormat(textFormat);
    t.autoSize = TextFieldAutoSize.LEFT;
    t.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
    t.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
    return t;
}

function onMouseOver(e:MouseEvent):void{
    var t:TextField = (TextField)(e.target);
    tooltip.targetAlpha = 1;
    tooltip.t.text = t.getTextFormat().size;
}
function onMouseOut(e:MouseEvent):void{
    var t:TextField = (TextField)(e.target);
    tooltip.targetAlpha = 0;
}
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(e:Event):void{
    tooltip.x += (this.mouseX - tooltip.x) * 0.2;
    tooltip.y += (this.mouseY - tooltip.y) * 0.2;
    tooltip.alpha += (tooltip.targetAlpha - tooltip.alpha) * 0.2;
}

for(var i = 116 ; i <= 130 ; i ++ )
{
    var t:TextField = getTextField(i);
    var n = this.numChildren - 1;
    t.x = n % 5 * 100;
    t.y = Math.floor(n /5) * 100;
    this.addChild(t);
}
this.addChild(tooltip);

Try yourself
1. 開flash CS X
2. 弄個靜態文字 字型大小設成 200
3. 把靜態文字切換到動態文字

會發現字變小了

怎麼解決這個問題?

用 Sprite 裝 TextField 再對 Sprite 作放大

沒有留言: