Flex:单击时复制UI元素

时间:2009-12-24 14:21:03

标签: flex actionscript-3

我有一个面板上有几个画布和按钮。我想实现一个功能: 当我点击下一个按钮时,我希望整个面板和画布被复制并放置在当前的下面。另外,我希望能够多次执行此操作。

如何动态生成UI元素? (也许我需要一些新的数组,例如state1,state2等)

请帮忙

2 个答案:

答案 0 :(得分:1)

我建议从描述面板及其组件的对象模型开始,并在那里实现所有复制和编辑功能。完成后,您可以将模型作为数据提供者分配给您正在创建的UIComponent。如果您让模型在更改或更新时调度事件,您的视图可以监听它并通过UIComponent生命周期(createChildren,commitProperties,updateDisplayList,...)更新自身。

以下是有关组件lifecylcle的更多信息:

http://livedocs.adobe.com/flex/3/html/help.html?content=ascomponents_advanced_2.html

答案 1 :(得分:0)

我写了一个小例子。希望这有帮助。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
    <mx:Script>
        <![CDATA[
            import mx.containers.Panel;
            import mx.controls.Text;
            var i:int = 1;
            function addPanel() {
                var p:Panel = new Panel();
                var pnlID:String = "panel" + i;
                    p.id = pnlID;
                    p.title = "New Panel ---> " + pnlID;
                var plainTxt:Text = new Text();
                    plainTxt.text = "This is panel " + pnlID;

                    p.addChild(plainTxt);

                this.addChild(p);
                i++;
            }
        ]]>
    </mx:Script>
    <mx:Button id="btn" label="ADD NEW PANEL" click="addPanel()"/>


</mx:Application>