サブメニューがクリックされたときに完全な「メニューパス」を取得する方法はありますか。たとえば、「入力」が選択されているときにメニュー デバイス->MODBUS->入力がある場合、「デバイス->MODBUS」部分を特定する方法はありますか?
フレッド・ティア
サブメニューがクリックされたときに完全な「メニューパス」を取得する方法はありますか。たとえば、「入力」が選択されているときにメニュー デバイス->MODBUS->入力がある場合、「デバイス->MODBUS」部分を特定する方法はありますか?
フレッド・ティア
メニューコントロールのdataProviderとしてXMLを使用していると思います。また、mx / s:Menuコントロールを使用していると思います。そうでなければ、あなたの質問は本当に混乱するでしょう、そして私の答えは範囲外です。
MenuEvent.ITEM_CLICKイベントをリッスンして、以下を実行できます。
// Event handler for the Menu control's change event.
private function menuHandler(evt:MenuEvent):void {
Alert.show("Label: " + evt.item.@label, "Clicked menu item");
var path:Array = new Array();
var objXML:XML = evt.item as XML;
while(objXML)
{
path.push(objXML);
objXML = objXML.parent();
}
path.reverse();
// now you have the path from top to bottom, as array of xml elements.
}
または、MenuEvent.ITEM_CLICK イベントで以下のように別の方法で: -
private function menuHandler(event:MenuEvent):void
{
var pathArray:Array = new Array();
pathArray.push(event.item.@label);
var parent:XML = event.item.parent();
while(parent != null)
{
pathArray.push(parent["@label"]);
parent = parent.parent();
}
pathArray.reverse();
trace(pathArray)
}