使用xml加载flex组件

使用xml加载flex组件,xml,apache-flex,actionscript,Xml,Apache Flex,Actionscript,如何使用XML加载flex组件。这个场景很简单,就像这样,我需要三个按钮来显示在我的面板中,但是选项true或false是否显示应该是xml格式的。您的问题不太清楚,所以我将用两种方式回答: 1。您需要有一个外部MXML 在这种情况下,您需要使用mxmlc.exe编译XML文件(或者将其重命名为.mxml并包含在Flex Builder中),然后使用SWFLoader组件访问该文件。我对SWFLoader没有太多的经验,所以我会让你自己去查 2。您需要通过外部XML设置组件的属性 创建一个HTT

如何使用XML加载flex组件。这个场景很简单,就像这样,我需要三个按钮来显示在我的面板中,但是选项true或false是否显示应该是xml格式的。

您的问题不太清楚,所以我将用两种方式回答:

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)" />
<properties>
    <button1Enabled>false</button1Enabled>
    <button2Visible>true</button2Visible>
    <button3Text>"TEXT"</button3Text>
</properties>
此函数获取服务的结果,并为各个按钮分配XML中定义的一些属性。或者,也可以使用service.lastResult从脚本中的任何位置访问最新结果

希望这有帮助

查看一些不错的XML操作工具,用于加载静态XML和将XML转换为对象。

//ActionScript代码

导入mx.controls.Menu; 导入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>


//组成部分

<mx:PopUpButton id="popUpButton"
            label="Please select an item"
            openAlways="true"
            creationComplete="init();" />


谢谢你的帮助。现在,我怎么会在弹出按钮的菜单中添加事件呢

我不知道您的意思,但是否要将事件侦听器添加到菜单中

在这种情况下,只需添加:

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。

这个问题不清楚。也许发布一段您认为应该如何工作的代码片段,或者您的最佳尝试。您是指mxml吗?还是使用XML作为数据提供者?
menu12.addEventListener (MouseEvent.CLICK, function (e : MouseEvent) : void {
    menu12Clicked (e, "argument");
});