First, the classes do not need to be "loaded". They only need to be linked in by the compiler. A variable declaration typed as that object will suffice
Have you looked at Modules? This is one of the issues they were designed for. Tracy Spratt, Lariat Services, development services available _____ From: [email protected] [mailto:[email protected]] On Behalf Of jimmy5804 Sent: Sunday, March 22, 2009 3:24 AM To: [email protected] Subject: [flexcoders] Architecting for extensibility I'm looking for some architecture advise. My AIR application has the ability to render certain kinds of data, each of which has a unique string descriptor (e.g. "red"). I would like to make it easy for others to add renderers for other kinds of data. To accomplish this, I created a renderer directory (Object) where the data descriptor is a key to the class path for the renderer and I planned to make extensive use of dynamic instantiation - when I ran into "red" data, I could just look up the "red" renderer, instantiate it, etc. My thinking was that the new developer would just need to create a renderer that implemented the requiste interface, create an entry in the directory, and would need very minimal understanding of the rest of the architecture to get their data to render. But I ran into the problem described here: http://thillerson. <http://thillerson.wordpress.com/2007/03/01/runtime-class-instantiation-in-a ctionscript-30/%20> wordpress.com/2007/03/01/runtime-class-instantiation-in-actionscript-30/ If you don't want to read it all, basically you need to make sure the referenced class has been loaded into your swf before you try to reference it (at least, that's my understanding). So, in my directory, I created something that creates and then destroys (for memory conservation) an instance of each renderer, and now my directory looks something like this: public class RendererDirectory { private var dir:Object { red:"com.blah.renderers.MyRenderer", blue:"com.joedata.renderers.BlueRenderer", ...}; // to make sure everything is in .swf private static function kluge():void { var a:Array = [new MyRenderer(), new BlueRenderer(), ...]; a = null; } public function getRenderer(datakey:String):IMyInterface { // all error checking omitted for brevity var classPath:String = dir[datakey]; var classRef:Class = getDefinitionByName(classPath) as Class; return new classRef(); } } I'm looking for advise on whether there is a better way to accomplish my big picture goal (ease of extensibility) or improve on my current scheme in some way. TIA!

