【问题标题】:Dynamically create button in Flex在 Flex 中动态创建按钮
【发布时间】:2012-10-19 17:06:07
【问题描述】:

我有关于 Flex SDK 的非常基本的问题,但我没有找到任何资源来解决我的问题,老实说,我什至不知道是否可以做我想做的事。所以这是我的问题:

我使用 Adob​​e Flex Builder 4.6 创建了 Flex 项目。然后我将按钮(假设它的 id 是btn1)放在主 MXML 文件中。我想从主 MXML 文件的脚本部分动态创建第二个按钮。具体来说,我想从btn1 的按钮单击处理程序创建它。

这是我的 MXML 代码(它是项目中唯一的文件):

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" 
               minWidth="955" minHeight="600">

    <fx:Script>
        <![CDATA[
            protected function btn1_clickHandler(event:MouseEvent):void
            {
                var btn2:Button = new Button();
                btn2.label = "Hello";
                btn2.x = 50;
                btn2.y = 50;
            }
        ]]>
    </fx:Script>


    <fx:Declarations>
        <!-- Non visual elements -->
    </fx:Declarations>

    <s:Button id="btn1" 
              x="10" y="10" 
              label="Кнопка"
              click="btn1_clickHandler(event)"/>

</s:Application>

但是当我点击btn1 时 - 没有任何反应。有可能我对 flex 编程范式有什么不明白的地方 - 请为我指出。

【问题讨论】:

  • addChild() 至少那个按钮。
  • 不要使用addChild()。使用 addElement()
  • @Florent 哦,谢谢它有效!如何将您的评论标记为对我的问题的回答?
  • @Florent Flex 是否对包含在 spark 或 mx 中的任何组件使用 addElement?我对 Flex 不熟悉,但对 AS3 有一些经验。
  • 如果你反编译你的 SWF,你就会明白它是如何在内部工作的! Flex 将 MXML 文件转换为 AS3,然后使用 addElement() 重建 MXML 结构。

标签: actionscript-3 flex4


【解决方案1】:

您必须使用 addElement() 将按钮添加到视图。

var btn2:Button = new Button();
btn2.label = "Hello";
btn2.x = 50;
btn2.y = 50;

addElement(btn2);

【讨论】:

    猜你喜欢
    • 2012-11-06
    • 2011-10-08
    • 2013-02-08
    • 2019-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多