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)"/>