4

我的 Flex4 (AIR) 项目中有以下 XML,它定义了我的菜单界面的开始:

<mx:MenuBar x="0" y="0" width="100%" id="myMenuBar" labelField="@label" itemClick="menuChange(event)">
    <mx:dataProvider>
    <s:XMLListCollection>
    <fx:XMLList xmlns="">
        <menu label="File">
            <item label="New"/>
            <item label="Load"/>
            <item label="Save" enabled="false"/>
        </menu>
        <menu label="Help">
            <item label="About"/>
        </menu>
    </fx:XMLList>
    </s:XMLListCollection>
    </mx:dataProvider>
</mx:MenuBar>

我试图找到让我在通过单击“加载”加载文件后将保存按钮设置为启用 = true 的语法,但是我无法弄清楚语法,请有人提出建议。

目前检测按钮点击的方式是通过 Switch/Case 测试 MenuEvent event.item.@label 的字符串结果。也许这不是最好的方法?

4

2 回答 2

5

回答我自己的问题....再次。我正在做的事情是怎么回事,似乎没人想回答???

无论如何,这里是:

事实证明,由于菜单栏是用 XML 定义的,而且完全是任意的,这完全取决于您决定如何定义菜单,在我的情况下,根据上面的菜单 XML,更改 Save 的“启用”状态的语法按钮如下。

menubarXML.item.(@label=="Save").@enabled = "true";

其中 enubarXML 是一个 XMLListCollection,其中包含我单独重新定义的 XMLList。

[Bindable]
        public var menuBarCollection:XMLListCollection;

        private var menubarXML:XMLList =<>
            <menu label="File">
                <menuitem label="New" data="1A"/>
                <menuitem label="Open" data="1B"/>
                <menuitem label="Save" data="1C" enabled="false"/>
            </menu>
            <menu label="Help" data="2A">
                <menuitem label="About" data="2A"/>
            </menu>
            </>;

然后在应用程序创建完成时调用此函数:

private function initCollections():void {
            menuBarCollection = new XMLListCollection(menubarXML);
        }

当然还有菜单栏的 XML 定义(根据需要自定义):

<mx:MenuBar id="myMenuBar" labelField="@label" itemClick="menuChange(event)" dataProvider="{menuBarCollection}"/>

希望有人发现我的劳动成果有用。

于 2010-10-20T13:44:54.940 回答
0
private var actions : Object = {
    mi_new : mi_new,
    mi_open : mi_open
};

protected function myMenuBar_itemClickHandler(event:MenuEvent):void
{
    actions[event.item.@action]();
}

private function mi_new() : void {
    // do new stuff
}

private function mi_open() : void {
    // do open stuff
}

private var menubarXML:XMLList =<>
    <menu label="File">
        <menuitem label="New" data="1A" action="mi_new"/>
        <menuitem label="Open" data="1B" action="mi_open"/>
        <menuitem label="Save" data="1C" enabled="false"/>
    </menu>
    <menu label="Help" data="2A">
        <menuitem label="About" data="2A"/>
    </menu>
    </>;
于 2011-01-11T08:49:19.303 回答