Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何在MovieClip(AS3)中居中文本字段_Actionscript 3_Flash_Movieclip - Fatal编程技术网

Actionscript 3 如何在MovieClip(AS3)中居中文本字段

Actionscript 3 如何在MovieClip(AS3)中居中文本字段,actionscript-3,flash,movieclip,Actionscript 3,Flash,Movieclip,我在定位的时候遇到了奇怪的问题 1) 我用AS创建的MovieClip() 2) 此MovieClip()中的文本字段 问题1):当我设置MC.x=0时;MC.y=0电影剪辑不会出现在左上角 问题2):文本既没有垂直居中,也没有水平居中 我的AS3代码: var button:ButtonMC = new ButtonMC(); button.y = 100; button.x = 100; button.width = 260; button.height = 50; button.butt

我在定位的时候遇到了奇怪的问题

1) 我用AS创建的MovieClip()

2) 此MovieClip()中的文本字段

问题1):当我设置MC.x=0时;MC.y=0电影剪辑不会出现在左上角

问题2):文本既没有垂直居中,也没有水平居中

我的AS3代码:

var button:ButtonMC = new ButtonMC();
button.y = 100;
button.x = 100;
button.width = 260;
button.height = 50;
button.buttonMode = true;
button.useHandCursor = true;
button.mouseChildren = false;

var tf:TextFormat = new TextFormat();
tf.size = 70;
tf.bold = true;
tf.font = "Arial"
tf.color = 0xFFFFFF;

var myText:TextField = new TextField();
myText.defaultTextFormat = tf;
myText.autoSize = TextFieldAutoSize.CENTER;

button.addChild(myText);
myText.text = 'ThisIsATestText1234';
myText.y = button.height * 0.5 - myText.textHeight * 0.5;

addChild(button);

由于myText已经添加到按钮中,您尝试获取按钮高度的位置可能会导致计算出错。首先尝试对齐文本字段,然后将其添加到按钮中。 您也在更改按钮的宽度和高度,这会更改比例,因此也会影响内部文本字段的外观和行为(因为它将成为按钮的子项)

同时解决这两个问题的最佳方法是在按钮内创建一个背景剪辑,并为其提供适当的大小。然后创建文本字段并根据背景调整其比例。这样按钮就保持了原来的比例,不会弄乱里面的东西

希望这有帮助

PS:
useHandCursor=true
在设置
buttonMode=true
;)时不需要

删除这些行:

button.width = 260;
button.height = 50;
而且,您将更容易定位文本-按钮高度也受添加的文本字段的影响,因此更好地使用固定值,例如

myText.y = 25 - (myText.height * 0.5);

您需要转到adobe docs about TextField,查看需要移动的实际边界框是什么。添加
myText.border=true然后您将看到需要重新定位的确切内容。