サブメニューを持つメニューの 1 つである menubar オブジェクトがあります。サブメニューのいくつかをクリックして、選択したサブメニュー アイコンの親のアイコンに置き換えたいと思います。
質問する
538 次
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 に答える