Apache flex FLEX:如何从AS3外部类文件引用MXML类?

Apache flex FLEX:如何从AS3外部类文件引用MXML类?,apache-flex,actionscript-3,list,flexbuilder,Apache Flex,Actionscript 3,List,Flexbuilder,我有一个mxml类,其中我放置了一个列表和几个按钮 我想要两样东西: 从作为外部文件的类访问列表。 添加as3类作为子视觉元素,因为我需要获取stage全局属性。 我不想通过在mxml中嵌入太多代码 因此,mxml的示例 <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="l

我有一个mxml类,其中我放置了一个列表和几个按钮

我想要两样东西:

从作为外部文件的类访问列表。 添加as3类作为子视觉元素,因为我需要获取stage全局属性。 我不想通过在mxml中嵌入太多代码

因此,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="800" minHeight="600" width="800" visible="true">
        <fx:Style source="Main.css"/>
        <fx:Declarations>
            <!-- Place non-visual elements (e.g., services, value objects) here -->
        </fx:Declarations>
        <fx:Script>
            <![CDATA[
                private var menuController:CMenuController= new CMenuController();
            ]]>
        </fx:Script>    
        <s:List x="598.35" y="100.55" width="178" height="324" id="ListBox">
            <s:layout>
                <s:VerticalLayout/>
            </s:layout>
        </s:List> 
</s:Application>

因此,我想在键入CDATA时从CMenuController访问ListBox。此外,我需要能够通过CMenuController中的addChild方法添加精灵和形状。

您必须首先将精灵和形状添加到UIComponent,然后将其添加到Flex代码中

要从外部as3类访问Flex代码,请在as3类中创建一个引用。像这样:

menuController.listReference=LISTID


我认为您没有从应用程序逻辑中分离视觉元素的概念。您试图完成的内容被认为是非常糟糕的形式,因为它会产生意大利面代码

您应该做的是使用数据驱动的方法,创建一个ArrayCollection,其中包含要在列表中显示的内容,该内容可能是MenuController的属性。然后添加一个自定义项目渲染器来执行您需要的任何操作。有点像这样:

<s:List dataProvider="{menuController.yourListData}" itemRenderer="YourCustomItemRenderer" />
在项目呈现器中,可以根据ListData的数据显示所需的任何内容。我建议您继续阅读并尝试寻找数据驱动的Flex应用程序的示例