在Flex 4中使用AS3实例化按钮?

时间:2011-01-04 07:52:58

标签: flex flash actionscript mxml builder

我在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组件(在应用程序运行时)。这只是一个测试脚本,我很难实现我的需要。

3 个答案:

答案 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方式有点不同。