This is a modified version of a class made by Ted Patrick (MCE). Use make() to create an empty movieclip and bind it with a class. Use attach to attach one from the library and do the same.
Mind the linebreaks... class MCUtils { private static var COUNT:Number = 0; private static var ext:String = ""; public static function make(scope:MovieClip, name:String, depth:Object, className:Object, args:Array, initObj:Object) { var clip:MovieClip = MovieClip.prototype.createEmptyMovieClip.apply(scope, [name != null ? name + ext : COUNT++ + ext, depth != null ? Number(depth) : scope.getNextHighestDepth()]); if(initObj) for (var p:String in initObj) clip[p] = initObj[p]; if(className) { clip.__proto__ = className["prototype"]; className.apply(clip, args ? args : []); } return clip; } public static function attach(scope:Object, link:String, name:String, depth:Object, className:Object, args:Array, initObj:Object) { var clip:MovieClip = MovieClip.prototype.attachMovie.apply(scope, [link, name != null ? name + ext : COUNT++ + ext, depth != null ? Number(depth) : scope.getNextHighestDepth(), initObj]); if(className) { clip.__proto__ = className["prototype"]; className.apply(clip, args ? args : []); } return clip; } } Jim Kremens On 1/5/06, August Gresens <[EMAIL PROTECTED]> wrote: > > Another related question - now that we can instance a class specified in > an > XML document, how can > we dynamically associate this class with a MovieClip instance? It is my > understaning that Object.Register > class associates a class with a movieclip symbol (not an instance). > > Thanks, > > August > > On 1/4/06, August Gresens <[EMAIL PROTECTED]> wrote: > > > > ClassFactory - just what we were looking for. Thanks, August > > > > On 1/4/06, Jim Kremens <[EMAIL PROTECTED]> wrote: > > > > > > Or this: > > > > > > class ClassFactory { > > > > > > public static function getClass(name:String, args:Object):Object { > > > return new Function(eval(name))(args ? args : []); > > > } > > > } > > > > > > /* USAGE > > > * //can be any referenced class > > > * var myClass = ClassFactory.getClass(" > > > org.flashcodersny.style.GradientFill", > > > args); > > > */ > > > > > > As long as the class you're trying to instantiate exists in the > _global > > > namespace, the above will work. To make sure it exists, just say its > > > name: > > > > > > class DeclareClassNames { > > > > > > function DeclareClassNames() { > > > org.myClass1; > > > org.myClass2; > > > //and so on... > > > } > > > } > > > > > > There have been a few threads on this subject recently... > > > > > > Jim Kremens > > > > > > > > > > > > On 1/4/06, Johannes Nel < [EMAIL PROTECTED]> wrote: > > > > > > > > no it needs to be a ref to the constructer function. > > > > this can be solved however with this: > > > > Object.RegisterClass("myClipSymbolName", > > > > _global["com"]["blackhammer"]["test"]["TestClass"]); > > > > > > > > > > > > On 1/4/06, August Gresens <[EMAIL PROTECTED]> wrote: > > > > > > > > > > Hello > > > > > > > > > > We're new to flash, migrating over from Director. We're trying to > > > > > implement > > > > > a Java style class loader in Flash, but we are having some > > > difficulty > > > > > doing > > > > > this. > > > > > > > > > > This is what we are trying to do: > > > > > > > > > > 1. Create an XML document with elements specifying the name of the > > > > class, > > > > > a > > > > > movieclip instance and and some initialization parameters. > > > > > > > > > > for example: > > > > > > > > > > <object class="com.blackhammer.test.TestClass" > > > name="testClassInstance1" > > > > > clipName="myTestClip"> > > > > > <param name="param1" value="1" type="int"/> > > > > > </object> > > > > > > > > > > 2. On startup, the Flash movie parses the XML file, instancing a > > > class > > > > > corresponding to the string name specifiied in the XML > (associating > > > it > > > > > with > > > > > the specified MovieClip), and populates the newly created object > > > with > > > > the > > > > > parameter values specified in the XML. > > > > > > > > > > When we attempt to do this using RegisterClass, however, it > appears > > > as > > > > > though the class name cannot be passed in as a string. > > > > > > > > > > This works: > > > > > > > > > > Object.RegisterClass("myClipSymbolName", > > > com.blackhammer.test.TestClass > > > > ); > > > > > > > > > > This doesn't: > > > > > > > > > > Object.RegisterClass("myClipSymbolName", " > > > com.blackhammer.test.TestClass > > > > > "); > > > > > > > > > > Any clues? > > > > > > > > > > Perhaps there is a more elegant way of doing this anyway, since > > > > > RegisterClass seems to associate all instances of myTestClip (the > > > > symbol) > > > > > with the specified class. What we'd like to do is associate an > > > instance > > > > of > > > > > a > > > > > class with an instance of a movieclip. > > > > > > > > > > Thanks, > > > > > > > > > > August > > > > > > > > > > -- > > > > > --------------------------------------------------------- > > > > > -------------------------------------------------------- > > > > > > > > > > August Gresens > > > > > Technical Director > > > > > Black Hammer Productions, NYC > > > > > [EMAIL PROTECTED] > > > > > > > > > > --------------------------------------------------------- > > > > > -------------------------------------------------------- > > > > > _______________________________________________ > > > > > Flashcoders mailing list > > > > > Flashcoders@chattyfig.figleaf.com > > > > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > > > > > > > > > > > > > > > > > > > > -- > > > > j:pn > > > > _______________________________________________ > > > > Flashcoders mailing list > > > > Flashcoders@chattyfig.figleaf.com > > > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > > > > > > > > > > > > > > > -- > > > Jim Kremens > > > _______________________________________________ > > > Flashcoders mailing list > > > Flashcoders@chattyfig.figleaf.com > > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > > > > > > > > > > > -- > > --------------------------------------------------------- > > -------------------------------------------------------- > > > > August Gresens > > Technical Director > > Black Hammer Productions, NYC > > [EMAIL PROTECTED] > > > > --------------------------------------------------------- > > -------------------------------------------------------- > > > > > > -- > --------------------------------------------------------- > -------------------------------------------------------- > > August Gresens > Technical Director > Black Hammer Productions, NYC > [EMAIL PROTECTED] > > --------------------------------------------------------- > -------------------------------------------------------- > _______________________________________________ > Flashcoders mailing list > Flashcoders@chattyfig.figleaf.com > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > -- Jim Kremens _______________________________________________ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders