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

我有一个mxml类,我放置一个列表和几个按钮。 我想要两件事: 从作为外部文件的类访问列表。 要将我的as3类添加为子(可视元素),因为我需要获取“stage”(全局属性)。 我不想通过
<![CDATA[]]>
将太多代码嵌入到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()方法添加Sprite和Shapes。     
已邀请:
您必须首先将Sprite和Shapes添加到UIComponent,然后将其添加到Flex代码中。 要从外部as3类访问Flex代码,请在as3类中引用。像这样: menuController.listReference = LISTID;     
我认为你没有将视觉元素与应用程序逻辑分离的概念。你想要完成的东西被认为是非常糟糕的形式,因为它使意大利面条代码。 你应该做的是使用数据驱动的方法,创建一个你想在List中显示的任何东西(可能是MenuController的属性)。然后添加自定义项呈示器以执行您需要的任何操作。有点像这样:
<s:List dataProvider="{menuController.yourListData}" itemRenderer="YourCustomItemRenderer" />
在项目渲染器中,您可以根据
yourListData
的数据显示您想要的任何内容。我建议您阅读项目渲染器的工作原理,并尝试查找数据驱动的Flex应用程序的示例。     

要回复问题请先登录注册