如何使用XML加载Flex组件。这个场景很简单,我需要在我的面板中显示三个按钮,但选项true或false是否显示应该是xml。
答案 0 :(得分:2)
你的问题并不完全清楚,所以我会以两种方式回答:
<强> 1。您需要拥有外部MXML
在这种情况下,您需要使用mxmlc.exe编译XML文件(或者只是将其重命名为.mxml并将其包含在Flex Builder中)并使用SWFLoader组件来访问该文件。我没有很多SWFLoader的经验,所以我会留给你查询。
<强> 2。您需要通过外部XML
设置组件的属性创建HTTPService,为其分配ID,并使用url属性将其指向XML文件。不要分配结果格式。然后,使用结果事件并指向将在加载XML时执行的函数。它应该是这样的:
<mx:HTTPService id="service" url="myXml.xml" result="Foo (event)" />
让我们说myXml看起来像这样:
<properties>
<button1Enabled>false</button1Enabled>
<button2Visible>true</button2Visible>
<button3Text>"TEXT"</button3Text>
</properties>
这就是你的Foo函数应该是什么样子。它将在HTTPServices完成加载myXml.xml时执行。
private function Foo (e : ResultEvent) : void {
myButton.enabled = e.result.properties.button1Enabled; // false
myOtherButton.visible = e.result.properties.button2Visible; // true
myLastButton.label = e.result.button3Text; // "TEXT"
}
此函数获取服务结果,并为各种按钮分配XML中定义的某些属性。或者,您也可以使用service.lastResult从脚本中的任何位置访问最新结果。
希望这有帮助!
答案 1 :(得分:0)
查看appcorelib以获取一些很好的XML操作工具,用于加载静态xml并将xml转换为对象。
答案 2 :(得分:0)
// ActionScript代码
import mx.controls.Menu; import flash.events.MouseEvent;
private var menu12:Menu; private function init():void { menu12 = new Menu(); menu12.labelField = "@label"; menu12.dataProvider = xmlDP; menu12.showRoot = false; menu12.width = popUpButton.width; popUpButton.popUp = menu12; }
// XML信息
<menu1 label="Some introduction" />
<menu2 label="Disabled State (disabled)." enabled="false" />
<sep1 type="separator" />
<menu3 label="parent">
<menu4 label="child1" />
</menu3>
<menu5 label="parent (disabled)" enabled="false">
<menu6 label="child1" />
<menu7 label="child2" />
<menu8 label="child3" />
</menu5>
<menu9 type="separator" />
<menu10 type="separator" />
<menu11 id="leftButton" label="Left" type="radio" groupName="radioGroup" toggled="true" enabled="true" />
<menu12 id="rightButton" label="Right" type="radio" groupName="radioGroup" enabled="false" />
<menu13 id="popupButton" label="Popup" type="radio" groupName="radioGroup" enabled="false" />
</root>
// component
<mx:PopUpButton id="popUpButton"
label="Please select an item"
openAlways="true"
creationComplete="init();" />
感谢您的帮助Aethex。现在我怎么会加入popupButton中的菜单。
答案 3 :(得分:0)
我不确定你的意思,但是你想在菜单中添加事件监听器吗?
在这种情况下,只需添加:
menu12.addEventListener (event, eventHandlerFunction);
示例:
menu12.addEventListener (MouseEvent.CLICK, menu12Clicked);
Flex会自动将事件传递给menu12Clicked函数作为参数。如果您想拥有多个参数,可以使用:
menu12.addEventListener (MouseEvent.CLICK, function (e : MouseEvent) : void {
menu12Clicked (e, "argument");
});
我没有使用PopUpButtons的经验,但是你的代码中的内容应该有效,尽管我假设xmlDP指向标签menu12。我还假设“@label”指向menu12中定义的标签字段。就个人而言,我喜欢嵌套我的XML,所以我不知道“@label”应该做什么。如果您将标签嵌套在menu12标记内,则可以使用xmlDP.label。