Apache flex 将按钮定位到中心,可在flex中改变宽度和高度

Apache flex 将按钮定位到中心,可在flex中改变宽度和高度,apache-flex,Apache Flex,我想将我的按钮始终放在中间,以适应任何应用程序宽度和高度的变化 如何在mxml中实现它?您想将按钮放在什么的中心位置?有时我认为,作为updateDisplayList()方法的一部分,最好在ActionScript中完成这类代码。但是,如果要在MXML中执行此操作: <buttonContainer id="container"> <s:Button x="{container.width/2}" y="{container.height/2}" /> </bu

我想将我的按钮始终放在中间,以适应任何应用程序宽度和高度的变化


如何在mxml中实现它?

您想将按钮放在什么的中心位置?有时我认为,作为updateDisplayList()方法的一部分,最好在ActionScript中完成这类代码。但是,如果要在MXML中执行此操作:

<buttonContainer id="container">
 <s:Button x="{container.width/2}" y="{container.height/2}" />
</buttonContainer>

从概念上讲,这应该适用于任何容器。一些容器使它更容易一些;例如,一组:

<s:VGroup horizontalAlign="Center" verticalAlign="middle">
     <s:Button />
</s:VGroup> 

如果
按钮的容器具有绝对布局(),则只需使用
ui组件和属性即可:

<s:Group width="400" height="300">
    <s:Button horizontalCenter="0" verticalCenter="0" />
</s:Group>


BasicLayout
是每个Spark容器的默认布局。mx组件没有单独的布局类,但概念是一样的:默认情况下,定位是绝对的。

我找到了一个精确的解决方案,可以在舞台中央放置一个按钮,以适应任何舞台宽度和高度的变化

button.x=(stage.stageWidth-button.width)/2;
button.y=(stage.stageHeight-button.height)/2;

垂直布局的目的是在垂直线上定位图元。HorizontanalAlign和VerticalAlign是VerticalLayout类上的属性。您似乎在说使用这些属性违背了类的目的。我不确定我是否同意。没有“规则”规定垂直布局的第一个元素必须从位置0,0开始。@www.Flextras.com您完全正确。我被VGroup示例中的
x=“{container.width/2}”y=“{container.height/2}”
部分欺骗了(这可能是复制/粘贴错误)。如果你编辑你的,我就编辑我的;)你是对的;那是我的复制粘贴错误。在VGroup中,X和Y属性被忽略。谢谢你们,正如“www.Flextras.com”所说的,我更喜欢在actionscript中执行,而不是在mxml中执行,代码有助于在actionscript中对齐中心:X=stage.stageWidth/2-somenumber。正确吗?这样做的唯一问题是它不会自动更新,除非您将其附加到调整大小功能。为什么不改为
button.horizontalCenter=0
button.verticalCenter=0
?这将确保它们始终保持更新,是更干净的代码,并允许您在AS3中进行设置,这正是您想要的。