I would separate the classname out into another argument in your XML, so in your example that's not working, you'd have:
<menuitem id="OpenAlertsWindowMenuOption" label="Open Alerts Window" callbackClass="ProjectProperties" callback="setValue" arguments="ShowAlertsWindow, true" /> Then you'd have to dynamically instantiate that class and call the assigned method. I have a couple tutorials on my blog about doing this: http://jake.cfwebtools.com/2009/04/08/dynamically-instantiate-a-class/ http://jake.cfwebtools.com/2009/05/15/flex-dynamic-casting-of-data/ The 2nd one deals with data casting which might not be as relevant but I still do the class stuff dynamically. Here's an example of what this might look like for you: var className:Class = Class( getDefinitionByName( getQualifiedClassName( "ProjectProperties" ) ) ); var function:Function = className["setValue"]; function.call(className[or null], parmaters.); FYI, this code is completely untested, just trying to give you an idea. Jake Churchill CF Webtools 11204 Davenport, Ste. 100 Omaha, NE 68154 http://www.cfwebtools.com 402-408-3733 x103 From: flexcoders@yahoogroups.com [mailto:flexcod...@yahoogroups.com] On Behalf Of edlueze Sent: Tuesday, May 19, 2009 6:00 AM To: flexcoders@yahoogroups.com Subject: [flexcoders] Call a Flex Function by Name I'm using a Menu control. Normally I'd catch the Menu's control event and then act on whatever selection the user made with something like a switch block. But I wanted to see if I could be more clever and embed the function name and parameters in the XML Menu data provider itself, like this: <mx:XML id="xmlFormMenuOptions" > <Menu id="MenuOptions"> <menuitem id="AddNewChartMenuOption" label="Add Chart..." callback="AddNewChartButton_click" arguments="" /> <menuitem id="RenameChartMenuOption" label="Rename Chart..." callback="PopUpTextBox" arguments="RenameChart, RenameChartButtonTextBox, {nameChartSelected}" enabled="{selectedChartingPanelTableCell}" /> <menuitem id="DeleteChartMenuOption" label="Delete Chart" callback="PopUpCheckBox" arguments="DeleteChart, DeleteChartButtonCheckBox" enabled="{selectedChartingPanelTableCell}" /> <menuitem id="RaiseChartOrderMenuOption" label="Raise Chart Order" callback="RaiseChartOrderButton_click" arguments="" enabled="{RaiseChartOrderButton.enabled}" /> <menuitem id="LowerChartOrderMenuOption" label="Lower Chart Order" callback="LowerChartOrderButton_click" arguments="" enabled="{LowerChartOrderButton.enabled}" /> <menuitem id="OpenAlertsWindowMenuOption" label="Open Alerts Window" callback="ProjectProperties.setValue" arguments="ShowAlertsWindow, true" /> <menuitem id="ChartingPanelWhatAmIMenuOption" label="What am I?" callback="PopUpMessage" arguments="ChartingPanelWhatAmIMenuOption, null " /> <menuitem id="HelpMenuOption" label="Help" callback="" /> </Menu> </mx:XML> If you look at each <menuitem/> you'll see a 'callback' attribute and an 'arguments' attribute. The arguments are comma-delineated that I need to parse into an Array and scrub: for example, by converting string references into real ones like this: if( this.hasOwnProperty(arg) ) arrayArguments[i] = this[arg]; I then have been successful in using the callLater function like this: callLater(this[callback], arrayArguments); So far so good - it works great! But I've hit a tiny snag. If the function is in a foreign class then everything falls apart. For example, this won't work: callback = "ProjectProperties.setValue" arguments = "ShowAlertsWindow, true" Because there is no such thing as this[ProjectProperties.setValue] the callLater function can't handle it. I can easily build a little stub but I'm hoping to keep things clean and elegant. I've been searching for a way to call-by-name in Flex but haven't found one (except for callLater). Is there a way I can do this?