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>

「読み込み」をクリックしてファイルが読み込まれた後に保存ボタンを enabled=true に設定できる構文を見つけようとしていますが、構文がわかりません。誰か提案してください。

現在、ボタンのクリックが検出される方法は、MenuEvent event.item.@label の String 結果をテストする Switch/Case によるものです。多分これは最善の方法ではありませんか?

4

2 に答える 2

5

私自身の質問に答える....もう一度。誰も答えたがらないように見える私がしていることは何ですか???

とにかく、ここにあります:

メニューバーは XML で定義されており、完全に任意であるため、メニューを定義する方法に完全に依存していることがわかりました。私の場合、上記のメニュー XML に従って、保存の「有効な」状態を変更する構文ボタンは次のようになります。

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

ここで、enubarXML は、別途再定義した XMLList を保持する XMLListCollection です。

[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 に答える