2
我有一個Flex應用程序,需要以編程方式生成菜單,這將是相當複雜和動態的。這樣做的最佳技術是什麼?在Adobe Flex中動態創建菜單?
更新:我已經使用RIAstar建議的菜單項和子項屬性的對象測試了下面的代碼。這是工作,除了我沒有看到「輸入」菜單,它似乎被繞過。我看到的是:
我所期待的 「添加 - >輸入 - >設備{} 0..8」。
感謝任何想法,弗雷德。
<?xml version="1.0" encoding="utf-8"?>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Menu;
protected function button1_clickHandler(event:MouseEvent):void
{
var toplevelMenu:Object = new Object();
toplevelMenu.label = "Top Level";
var addMenu:Object = new Object();
addMenu.label = "Add";
toplevelMenu.children = addMenu;
var inputMenu:Object = new Object();
inputMenu.label = "Input";
var inputDevicesMenu:ArrayCollection = new ArrayCollection();
for (var i:int = 0;i < 10;i++) {
if ((i % 2) == 0) {
var inputDeviceMenu:Object = new Object();
inputDeviceMenu.label = "Device " + i;
inputDevicesMenu.addItem(inputDeviceMenu);
}
}
if (inputDevicesMenu.length > 0) {
inputMenu.children = inputDevicesMenu;
}
addMenu.children = [inputMenu];
var menu:Menu = Menu.createMenu(this, toplevelMenu, false);
menu.show(event.stageX, event.stageY);
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Button x="56" y="28" label="Show Menu" click="button1_clickHandler(event)"/>
[菜單](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/Menu.html )類開箱即用(儘管沒有Spark等價物)。 – RIAstar
感謝您的評論。我的問題是,如果我有例如5層深的菜單,如果我使用上述技術,我將不得不保留5個對象引用並鏈接一堆.appendChild調用。只是想知道是否有更好的方法來做到這一點。 –
我想我明白你現在得到的是什麼。您必須創建分層結構_some_的方式。請注意,它並不是XML:它可能是一個具有「children」屬性的數組或IList(我認爲)。也許你會更喜歡那個。 – RIAstar