0

サブメニューを持つメニューの 1 つである menubar オブジェクトがあります。サブメニューのいくつかをクリックして、選択したサブメニュー アイコンの親のアイコンに置き換えたいと思います。

4

1 に答える 1

2

Flex 4/4.5 のメニューバーは、依然として Flex 3 時代の mx コンポーネントです。

メニューバーはデータ駆動型であるため、親メニューの対応するデータ項目を変更し、そのアイコン データを変更して、メニュー データ全体をコンポーネントに再割り当てできます。次の疑似コードは、説明されているロジックを表す場合があります。

private var _menuBarData:Object;
public var myMenuBar:MenuBar;

override protected function createChildren():void
{
    super.createChildren();

    if ( myMenuBar == null )
    {
        myMenuBar = new MenuBar();
        addChild(myMenuBar);
    }

    myMenuBar.dataProvider = _menuBarData;  // assume that _menuBarData is populated already
    myMenuBar.removeEventListener(MenuEvent.CHANGE, myMenuBar_change);
    myMenuBar.addEventListener(MenuEvent.CHANGE, myMenuBar_change);
}


private function myMenuBar_change( event:MenuEvent ):void
{
    var itemData:Object = event.item;

    if ( itemData == null )
    {
        return;
    }

    var iconData:Object = itemData[iconField];

    var parentData:Object = findParentData(itemData);
    if ( parentData )
    {
        parentData[iconField] = iconData;

        event.menuBar.dataProvider = _menuBarData;  // reassign _menuBarData as it is updated
    }
}


private function findParentData(itemData:Object):Object
{
    // traverse through _menuBarData object and find out the parent of itemData
    // this highly depends on how your data structure is designed
}
于 2012-10-30T17:36:31.170 に答える