Apache flex 在运行时创建面板可以';我看不见他们

Apache flex 在运行时创建面板可以';我看不见他们,apache-flex,actionscript,flash-builder,Apache Flex,Actionscript,Flash Builder,我的问题是我正试图制作一个面板。Main.mxml中的“我的”按钮,而panel函数是在panel_Create.mxml中定义的。代码运行良好。在panel_Create中,它们的函数用于在运行时创建面板。我面临的问题是,当我运行程序时,它不会显示面板,但它确实会增加n的值,并在单击8次后发出警告消息。请告诉我为什么我看不到面板。当我将所有代码放在Main.mxml中时,代码运行良好 <fx:Script> <![CDATA[

我的问题是我正试图制作一个面板。Main.mxml中的“我的”按钮,而panel函数是在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>

试试这个:

<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>

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


问题是您的adminPanel从未添加到后台,因此不可见。

adminPanel未被创建。您必须自己执行
addElement(adminPanel)

if ( n < 8)
                    {
                        adminPanel.panel_Create(n);
                        addElement(adminPanel)
                        n++;
                    }
if(n<8)
{
adminPanel.panel_创建(n);
附录(管理面板)
n++;
}

我不理解您在这些问题上的逻辑。为什么要创建一个
panel\u Create
类(这是一个可怕的命名约定),然后让该类处理面板的创建?通过这样做,你到底想要完成什么?我试图在运行时在面板内制作一系列面板和其他一些东西。留下名字,我以后再定。我想在不同的mxml文件中执行此操作,而不是在相同的main.mxml中。在这里,我点击按钮,它应该在panel_create mxml中启动panel_create函数。但是当我点击面板时,面板不会显示出来-1-如果没有更多细节,这个问题无法回答。具体来说,必须提供
面板_Create
类中的一些相关代码部分,特别是在调用
addChild
方法的情况下。var myPanel:panel=new panel();myPanel.id=xx;附录(myPanel);setElementIndex(myPanel,索引);索引++;这就是它应该调用的代码如果您将附加代码作为编辑(而不是注释)放回原始问题中,我很乐意删除-1。否则,网站规则禁止我更改我的投票。我现在也在想同样的问题是,我如何才能使它们可见看看这个:注意addElement()