This may be considered kinda nutty but I use this to dynamically detect
Document classes in loaded .swfs.

        loader.contentLoaderInfo.addEventListener(Event.INIT, onInit);

        private function onInit(e:Event):void
        {
            addChild(loader);
            contentClass =
getDefinitionByName(getQualifiedClassName(loader.content));
            contentClass(loader.content).startUp();
        }

On Thu, Nov 20, 2008 at 5:48 PM, Ian Thomas <[EMAIL PROTECTED]> wrote:

> To be honest, I don't know - but I suspect
> flash.utils.getDefinitionByName() is an alias for
> ApplicationDomain.currentDomain.getDefinition(). Whereas you can also
> use getDefinition() to retrieve class definitions from within other
> ApplicationDomain objects - such as loaded Flex modules.
>
> Essentially ApplicationDomains are all about code segregation. You
> remember how in AS2 if you loaded in a second SWF none of its class
> definitions would overwrite the ones in the loading movie i.e. it
> 'inherited' the classes of the parent? i.e. if you had a class called
> myapp.ClassA in both the movie doing the loading and the movie getting
> loaded, the first definition encountered would be the one that won. A
> pain if the movie you're loading in was compiled later, say, with a
> different version of ClassA.
>
> In AS3 in the flash.display.Loader class (or Flex ModuleManager or
> various other loading classes) you can specify different
> ApplicationDomains to use for the .swf you're loading in. It's almost
> like namespacing.
>
> If you pass null i.e. the default, from memory that means that the
> loading .swf gets loaded into a _child_ ApplicationDomain i.e. gets
> all the parent classes, but none of the new classes are directly
> instantiable in the parent movie. From memory again, I think that's
> the same as saying new
> ApplicationDomain(ApplicationDomain.currentDomain), the latter
> creating a child domain of the current one.
>
> If you pass ApplicationDomain.currentDomain, the loading .swf gets all
> the parents classes and the new classes it loads are instantiable in
> the parent movie.
>
> If you pass new ApplicationDomain(), the loading .swf is completely
> isolated. It has its own versions of all classes, and won't
> accidentally inherit definitions from the parent.
>
> This is just for the purposes of direct use of the class/package name
> i.e. new com.mypack.ClassA(). However, you can get to different class
> definitions (even different definitions of class with the same
> name/package as each other) by using getDefinition() on the
> appropriate ApplicationDomain.
>
> I hope that makes sense!
>
> My only irritation with it - currently - is that the Flex framework
> doesn't support running inside a completely separate
> ApplicationDomain. So loading a Flex .swf into a self-contained
> ApplicationDomain just doesn't work; which is a shame, as it would
> have meant that running a Flex 2 app inside a Flex 3 app was perfectly
> viable or vice versa (useful for legacy; also useful for the project
> I'm working on at the moment which has one set of CSS in the parent
> app, a different set in the child...). Apparently that's on the cards
> to be fixed for Gumbo.
>
> That was probably far more detail than you wanted. :-D
>
> Ian
>
> On Thu, Nov 20, 2008 at 10:26 PM, Merrill, Jason
> <[EMAIL PROTECTED]> wrote:
> > Ian and David - interesting. So what is the difference between
> getDefinition and getDefinitionByName?
> >
> > What I ended up using was this, which works well:
> >
> > var ClassReference:Class =
> getDefinitionByName("people."+_associates[_associateCount]) as Class;
> > var instance = new ClassReference();
> >
> > If I need it to be cast as the class it subclasses, like a MovieClip, so
> it can be added to the stage, I do:
> >
> > addChild(MovieClip(instance));
> >
> > is there any particular reason to use getDefinition instead?  At first
> glance, seems to accomplish the same thing.
> >
> > Jason Merrill
> > Bank of America     Instructional Technology & Media   ·   GCIB & Staff
> Support L&LD
> >
> > Interested in Flash Platform technologies?  Join the Bank of America
> Flash Platform Developer Community
> > Interested in innovative ideas in Learning?  Check out the Innovative
> Learning Blog and subscribe.
> >
> >
> >
> >
> >
> >
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:
> [EMAIL PROTECTED] On Behalf Of David Hershberger
> > Sent: Thursday, November 20, 2008 5:22 PM
> > To: Flash Coders List
> > Subject: Re: [Flashcoders] get class by definition - or something like
> that
> >
> > You want ApplicationDomain.getDefinition(className: String)
> > and also ApplicationDomain.hasDefinition(className: String) is handy.
> >
> > Dave
> >
> > On Thu, Nov 20, 2008 at 1:52 PM, Merrill, Jason <
> > [EMAIL PROTECTED]> wrote:
> >
> >> Refersh my memory.  What was the name of that AS3 class method to get a
> >> class definition from a string? Something like
> >> getObjectByDefinition("MyClass") or something like that, but that's not
> it.
> >>  Our proxy server is down and I can't Google it, and the help docs are
> no
> >> help.
> >>
> >> Basically, I'm tring to remember the AS3 method to dynamically
> instantiate
> >> a class from a string definition - i.e.
> >>
> >> var ClassDefinition:Class = getClassByDefinition("Apple");
> >> var newClassInstance:* = new ClassDefinition();
> >>
> >> Something like that, I've done it before, I just can't find the syntax
> or
> >> remember the method.
> >>
> >> Jason Merrill
> >> Bank of America     Instructional Technology & Media   ·   GCIB & Staff
> >> Support L&LD
> >>
> >> Interested in Flash Platform technologies?  Join the Bank of America
> Flash
> >> Platform Developer Community
> >> Interested in innovative ideas in Learning?  Check out the Innovative
> >> Learning Blog and subscribe.
> >>
> >>
> >> _______________________________________________
> >> Flashcoders mailing list
> >> Flashcoders@chattyfig.figleaf.com
> >> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >>
> > _______________________________________________
> > Flashcoders mailing list
> > Flashcoders@chattyfig.figleaf.com
> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >
> > _______________________________________________
> > Flashcoders mailing list
> > Flashcoders@chattyfig.figleaf.com
> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >
>
> _______________________________________________
> Flashcoders mailing list
> Flashcoders@chattyfig.figleaf.com
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>



-- 
--Joel Stransky
stranskydesign.com
_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to