Вот как я это делаю ....
Добавьте атрибут к каждому из элементов XML, чтобы сохранить имя события для каждого элемента меню:
<menu4 label="child1" eventName="child1Event" />
И добавьте прослушиватель событий для каждого известного события при инициализации родительского компонента:
private function init():void
{
menu12 = new Menu();
...
addEventListener("child1Event", child1EventHandler);
}
private function child1EventHandler(event:Event):void
{
....
}
(Вы можете даже проанализировать XML, чтобы динамически добавить прослушиватели событий
private function init():void
{
menu12 = new Menu();
...
addEventListener("child1Event",
function(event:Event)
{
alert(event.type);
}
);
}
Добавить обработчик событий itemClick:
private function popUpButton_itemClickHandler(event:MenuEvent):void
{
if (event.item.@eventName != null)
dispatchEvent(new Event(event.item.@eventName));
}
<mx:PopUpButton id="popUpButton"
label="Please select an item"
openAlways="true"
creationComplete="init();"
itemClick="popUpButton_itemClickHandler(event);" />