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