1

我在舞台上有一个动态文本字段,我希望文本的字体大小根据舞台大小(即 800x600)自动放大。我怎样才能做到这一点?

如果我手动输入大字体,并且文本的长度要大得多,那么它将被剪掉。对此有什么想法吗?

我正在使用 Actionscript 3。

谢谢!

4

2 回答 2

1

有几种方法可以做到这一点。如果无论生成多少文本都想使用相同大小的字体,则应wordWrap = true在文本字段中使用。如果您想根据字段中的文本量调整字体,它会变得有点棘手但并非不可能。我会做这样的事情

var maxFont:int = 72;
var minFont:int = 9;
var currentSize:int;
var maxTxtWidth:int = 550;
var incTxt:String;

var tf:TextField = new TextField;
tf.autoSize = "left";
currentSize = maxFont;
while(tf.width > maxTxtWidth){
    tf.htmlText = '<font size="'+currentSize+'">'+incTxt+'</font>';
    if(currentSize == minFont){
       break;
    }  
    currentSize --;
}

然后像往常一样添加子等。还有其他方法可以做到这一点,使用样式或 textFormat 但这是一个快速的解决方案,也是第一个想到的。请注意,此特定语法仅适用于单行文本。你可以稍微调整一下,让它适合多行。如果你确实使用了这种技术,请把它清理干净,这只是直接从我的脑海中吐出来的。

于 2013-09-23T11:30:31.137 回答
1

好的,在@NappingRabbit 的代码的帮助下,我总结了自己的工作代码。

我的主要目标是根据舞台大小(550x400)自动调整字体大小。如果文本长度很少,则尽可能大地显示它。如果分机长度很大,则降低字体大小。

这是我的工作代码,供其他寻求相同的人使用。(闪光 CS4 / AS3)

var tf:TextField = new TextField();
var size:int = 72;
var foundLargeText:Boolean = false;
var txt:String = "Starting.... Lorem ipsum dolor sit amet, vim laudem argumentum te. Mel nihil nobis oratio ea. Ex sed dolores deterruisset, qui in eius liber. Ne qui minim iracundia, dictas saperet ut cum, id nobis conceptam persequeris sea. Eum at ferri dolor denique, mel audiam fabulas quaestio at. Illum voluptua facilisis nec eu, nam ea quem putent. Elitr aliquam mea ne. In eam iudico petentium scriptorem. Pro mucius oporteat te, impetus scriptorem sea ne, quo graecis menandri rationibus ex. Quando repudiare adipiscing mel cu, has insolens platonem te, eu quando scripta accusata quo. Idque dictas vis eu, an eripuit delenit conclusionemque pri. Et incorrupte signiferumque has, alia bonorum nec id, sea scripta insolens expetendis ne. This is end...";

tf.autoSize = "right";
tf.wordWrap = true;
tf.width = 540;
tf.htmlText = "<font size='"+size+"'>"+txt+"</font>";
tf.border = true;
while(tf.textHeight>=400){
    size--;
    foundLargeText = true;
    tf.htmlText = "<font size='"+size+"'>"+txt+"</font>";
}
trace("using size: "+size);
if(foundLargeText){
    tf.htmlText = "<font size='"+size+"'>"+txt+"</font>";
}
addChild(tf);

谢谢大家!

于 2013-09-23T18:06:42.603 回答