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

Reply via email to