我在舞台上有一个动态文本字段,我希望文本的字体大小按照舞台大小(800x600)自动加载。我怎么能这样做?
如果我手动输入大字体,并且文本在长度上大得多,那么它将剪掉。关于这个的任何想法?
我正在使用Actionscript 3。
谢谢!
答案 0 :(得分: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,但这是一个快速的解决方案,也是第一个想到的方法。请注意,此特定语法仅适用于单行文本。您可以稍微调整一下,使其适合多线。如果你使用这种技术,请清理它,这只是直接吐出我的脑袋。
答案 1 :(得分:1)
在@NappingRabbit代码的帮助下,我得出了自己的工作代码。
我的主要目标是根据舞台大小(550x400)自动调整字体大小。 如果文本长度很少,则显示尽可能大。如果分机长度很多,那么降低字体大小。
这是我为其他人寻求相同工作的代码。 (Flash 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);
谢谢大家!