我在舞台上有一个动态文本字段,我希望文本的字体大小根据舞台大小( 800x600)自动增大。我该怎么做呢?
如果我手动输入大字体,而文本的长度要大得多,那么它就会被剪裁掉。对此有什么想法吗?
我正在使用ActionScript3。
谢谢!
发布于 2013-09-23 19:30:31
有几种方法可以做到这一点。如果无论生成多少文本都要使用相同大小的字体,则应在文本字段中使用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 --;
}然后添加would等,就像你通常做的那样。还有其他方法可以做到这一点,使用样式或textFormat,但这是一个快速的解决方案,也是首先想到的。请注意,此特定语法仅适用于单行文本。您可以对其进行一些调整,使其适用于多行。如果你真的使用这个技巧,请把它清理干净,这是直接从我的头上吐出来的。
发布于 2013-09-24 02:06:43
好了,在@NappingRabbit的代码的帮助下,我完成了我自己的工作代码。
我的主要目标是根据舞台大小(550x400)自动调整字体大小。如果文本长度很少,则显示为尽可能大。如果ext长度很大,则减小字体大小。
这是我的工作代码,供其他正在寻找相同代码的人使用。(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);谢谢大家!
https://stackoverflow.com/questions/18944278
复制相似问题