在运行时创建面板无法看到它们

时间:2011-09-27 04:03:45

标签: flex actionscript flash-builder

我的问题是我正在尝试制作一个小组。我在Main.mxml中的按钮,而面板函数在panel_Create.mxml中定义。代码工作正常。在panel_Create中,它们是在运行时创建面板的函数。我面临的问题是,当我运行该程序时,它不会显示面板,但它确实增加了n的值,并且在8次点击后它给出警报消息。请告诉我为什么我看不到面板。当我将所有代码放在Main.mxml

中时,代码工作正常
<fx:Script>
            <![CDATA[

                import Components.panel_Create;
                import mx.controls.Alert;
                import spark.components.Button
                public var adminPanel:panel_Create = new panel_Create();

                public var n:Number = 0;
                public function panel(event:MouseEvent): void
                {
                    if ( n < 8)
                    {
                        adminPanel.panel_Create(n);
                        n++;
                    }
                    else
                    Alert.show('More Panels Not Allowed', 'Alert Box', mx.controls.Alert.OK);          
                }
            ]]>
        </fx:Script>

        <s:Button id="add" includeIn="State1" x="398" y="10" label="Add Panel" click="panel(event)"/>
        <Components2:panel_Create includeIn="State1" x="10" y="66" width="737" height="599">
        </Components2:panel_Create>

    </s:Application>

3 个答案:

答案 0 :(得分:1)

我相信已创建了8个面板,并根据您的一条评论中的代码将它们作为子元素添加到adminPanel

问题是您的adminPanel永远不会添加到舞台中,因此不可见。

答案 1 :(得分:0)

请改为尝试:

<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">
    <fx:Script>
        <![CDATA[
            private var panels:Array = [];

            private function addPanel():void
            {
                if (panels.length < 8)
                {
                    var panel:Panel = new Panel();
                    panel.title = "Panel "+(panels.length + 1);
                    panels.push(panel);
                    addElement(panel);
                }else{
                    trace('More Panels Not Allowed');
                }                   
            }
        ]]>
    </fx:Script>
    <s:Button label="Add Panel" click="addPanel()"/>
</s:Application>

答案 2 :(得分:0)

未创建adminPanel。你必须自己做addElement(adminPanel)

if ( n < 8)
                    {
                        adminPanel.panel_Create(n);
                        addElement(adminPanel)
                        n++;
                    }