我在Flex 3.5 SDK和Flash Builder 4上使用此代码,该函数在MXML应用的creationComplete上调用。
var myButton:Button = new Button;
myButton.label = "test";
addChild(myButton);
Alert.show("Button Created");
但它工作正常,当我在同一个Flash Builder 4上使用它时,在Flex 4.0 SDK下,没有任何事情发生。 Alert.show()甚至没有显示它甚至没有到达那一点。
所以我的问题是,出了什么问题?我错过了什么吗?
P.S。 我需要能够动态创建/删除MXML组件(在应用程序运行时)。这只是一个测试脚本,我很难实现我的需要。
答案 0 :(得分:1)
在Spark中,您需要使用addElement而不是addChild
var b:Button = new Button();
addElement(b);
我不确定为什么你的警报不起作用:\
答案 1 :(得分:1)
通常你在MXML中创建UI,但在某些情况下你需要动态创建UI元素,正如另一张海报所提到的,addElement()是Flex 4 Spark容器的关键。
向MX容器(从Flex 3)添加组件时,仍然在Flex 4中使用addChild()。添加到Spark容器时,只需要使用addElement()。
当然,Adobe建议您在有一些类似的MX容器时使用Spark容器。
答案 2 :(得分:0)
以弹性方式执行此操作会更好。
<fx:Script>
<![CDATA[
import mx.controls.Alert;
private function alert():void
{
Alert.show("Button added to stage");
}
]]>
</fx:Script>
<s:Button id="myButton" label="test" addedToStage="alert()"/>
您无法在flex中仅使用addChild添加按钮。首先,您需要创建一个UIComponent,然后将该按钮添加到UIComponent。它与flash方式有点不同。