如何将多行文本字段(动态,以文本为中心)垂直居中到另一个MovieClip?

时间:2011-04-20 21:11:03

标签: flash actionscript-3 actionscript flash-cs4

通常,要将舞台上的实例居中地垂直居中放置,您可以使用简单的逻辑并引用所涉及符号的宽度,高度,x和y坐标。

这似乎不可能原位,因为Textfield.height和Textfield.textHeight报告的值不正确。它们带回相同的值,这些值不反映舞台上实例的实际高度。

enter image description here

我制作了这个简单的例子来说明问题:http://omnom.replete.nu/fails.fla

感谢。

2 个答案:

答案 0 :(得分:2)

我可能误解了你的问题,但如果没有,你试过这个吗?

red.tf.y = red.blue.height / 2 - red.tf.height / 2 + red.blue.y;

这使文本字段(tf)垂直居中于蓝框。

基本上你得到蓝色矩形的中心y坐标,减去文本字段的中心y坐标,然后最后添加蓝色矩形的y位置。

为获得最佳效果,您需要定义autoSize的文本字段,以及影片剪辑具有(0,0)参考点。

水平方向相同,但有x坐标和宽度参数。

red.tf.x = red.blue.width / 2 - red.tf.width / 2 + red.blue.x;

答案 1 :(得分:1)

TextField的高度与文本本身的高度无关 文本高度可能会因多种原因而发生变化。 一个很好的例子是字体系列和字体大小 您需要使用文本指标来获取该信息 ALL THE INFO HERE

[编辑]
根据你的评论,你的scaleTextToFitInTextField函数的最后一行应该这样做。 您需要找到两个对象的中心并减去它们然后添加偏移量

txt.x = cont.width/2 - txt.width/2 + cont.x
txt.y = cont.height/2 - txt.height/2 + cont.y

[编辑编辑]
同时删除这两行,因为它们现在是多余的

red.tf.x = red.mchammer.x;
red.tf.y = red.mchammer.y;