AS3 / AIR移动应用程序动态文本大小取决于长度

时间:2013-05-28 04:32:41

标签: actionscript-3

我正在开发AS3和AIR for iOS和Android的应用程序,它有很多标签,并且想知道如果标签文本长度太长,是否有人知道减少字体大小的最佳方法。

我基本上希望标签中的文字始终适合,无论长度如何。

由于

1 个答案:

答案 0 :(得分:0)

这可以通过多种方式实现。

您可以调用fitLabel()传递文本字段和边界框:

fitLabel(textField, new Rectangle(0, 0, stage.stageWidth, stage.stageHeight));

一种方法是将文本字段缩放到边界:

protected function fitLabel(textField:TextField, bounds:Rectangle):void
{
    var metrics:TextLineMetrics = textField.getLineMetrics(0);
    var ratio:Number = Math.min(bounds.width / metrics.width,
                                bounds.height / metrics.height);

    textField.scaleX = ratio;
    textField.scaleY = ratio;
}

另一种方法是实现一种算法,根据dpi调整字体大小:

protected var dpi:uint = 72;

protected function fitLabel(textField:TextField, bounds:Rectangle):void
{
    var metrics:TextLineMetrics = textField.getLineMetrics(0);

    var format:TextFormat = textField.getTextFormat();
    format.size = (stage.stageWidth / dpi) * 13;

    textField.setTextFormat(format);
    textField.width = bounds.width;
    textField.height = bounds.height;
}

另一种方法是迭代通过while循环增加每次传递的字体大小,直到最大宽度达到界限。

Example SWF

  

hello-world