Yeah, I just reproduced your bug ... Seems like the reference to _root 
gets screwed up on subsequent calls. What's *really* interesting ... If 
I comment out the cleanup in your AVMLoader class, I can *crash* Eclipse ...

if (_loader!=null)
            {
                //_loader.unload();
                //removeChild(_loader);
                //_loader=null;
   }


I would file a bug ... Note that your publish path for your FLA is 
incorrect. It should be bin/AVMTestMovie.swf but its bin/AVMMovie.swf.

Ian Thomas wrote:
>
> I've created a pared-down test application to see how easy the problem
> is to reproduce - and passed it to Adobe.
>
> I haven't found exactly the same problem, but have got something
> similar, and no less worrying.
>
> My new test app consists of a panel and a button. When you press the
> button, it loads an AVM1 movie into a Loader() class; the AVM1 movie
> outputs some debug information into a text field and creates an
> instance of a class (which outputs more debug information).
>
> The first time you press the button, all works as expected.
>
> The second time, the loading works, and all the debug information is
> correct, but the constructor of the class is never called - even
> though the class instance does appear to be created.
>
> I've no idea what's going on, but if anyone feels like taking a look
> at the test code it can be found here:
> http://www.wildwinter.net/public/files/AVM1Test.zip 
> <http://www.wildwinter.net/public/files/AVM1Test.zip>
>
> Cheers,
> Ian
>
> On 9/16/06, Ian Thomas <[EMAIL PROTECTED] <mailto:ian%40eirias.net>> wrote:
> > Hi Daniel,
> > Thanks for that. If I understand you correctly, you're suggesting 
> creating
> > a known LocalConnection which acts as an 'ID server' in AVM2.
> >
> > I had thought about something similar.
> >
> > The issue is that I can't see how the pairing up works between an
> > AVM1Loader (the AS3 component) and it's contained AVM1 movie. I can
> > understand using a known point for the AVM1 movie to talk to, but 
> can't see
> > how you can guarantee that the right IDs can be guaranteed to be 
> known by
> > both parent and child if, for example, two such pairs are being 
> created at
> > the same time. You can't queue it - e.g. FIFO - because you can't 
> guarantee
> > that the first AVM1 movie loads faster than the second. And you 
> can't even
> > do it by URL mangling or somesuch, because we might be dealing with 
> loading
> > the same movie into two different components (which is the case in my
> > setup).
> >
> > Additionally, I think the known server fails if (for example) two copies
> > of the same Flex app were running at the same time - although I 
> guess you
> > could get around that by querying LC_DAEMON to see if it already exists
> > before creating it.
> >
> > I'll play around with the idea and see if I can make sense of it; unless
> > you've any other light to shed. :-)
> >
> > Thanks for the Adobe info - I'll create a simple test case and drop 
> a note
> > to them.
> >
> > Cheers,
> > Ian
> >
> >
> > On 9/16/06, Daniel Wabyick <[EMAIL PROTECTED] 
> <mailto:daniel%40wabysabi.com>> wrote:
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > That most definitely sounds like a bug ... I think the following would
> > > work:
> > >
> > > - Create a class LocalConnectionDaemon in AVM2 that is connected 
> under a
> > > hardcoded LC name. ( e.g. "LC_DAEMON" );
> > >
> > > - Create a class LocalConnectionDaemon in AVM1 that does the 
> following:
> > > - Generates a unique LocalConnection URL based on the
> > > current-time-millis ( e.g. var clientId:String = 
> "LC_CLIENT_1324343243243"
> > )
> > > - Send a command to LocalConnectionDaemon via - LC_SERVER ..
> > > createClient( clientId )
> > > - Listen for a command (on that same LocalConnection, or one the
> > > server can figure out) called onClientCreated( otherClientId:String )
> > >
> > > - LocalConnectionDaemon should have a method "createClient(
> > > clientId:String )" that takes the ID, and transforms it to a 
> guaranteed
> > > unique name
> > > (e.g. var newClientId:String = clientId + "_AVM2") and sends
> > > onClientCreated( newClientId );
> > >
> > > Definitely more painful, but doable. I should point out that one big
> > > issue with LocalConnection is that messages are limited to 40kb. 
> You may
> > > need to chunk your requests over if they are large.
> > >
> > > Also, just thought this would be a good time to point out Adobe's
> > > bug-report / wishlist page. If you send them a *reproducable* bug
> > > report, they will get back to you very quickly:
> > >
> > >
> > http://www.adobe.com/cfusion/mmform/index.cfm?name=wishform 
> <http://www.adobe.com/cfusion/mmform/index.cfm?name=wishform>
> > >
> > > Regards,
> > > -D
> > >
> > >
> > > Ian Thomas wrote:
> > > >
> > > > Hi guys,
> > > >
> > > > I've hit a huge hurdle when trying to communicate between AVM1 
> and AVM2.
> > > >
> > > > I've been trying to create a component - call it AVM1Loader - which
> > > > will allow simple communication between an AVM2 flex app and a
> > > > contained AVM1 file.
> > > >
> > > > In theory, it's pretty simple:
> > > >
> > > > - Use Loader to load the file.
> > > > - Create a LocalConnection for AVM2 to talk to AVM1
> > > > - Create a LocalConnection for AVM1 to talk to AVM2
> > > >
> > > > This all works fine, and communications all work.
> > > >
> > > > However, the problem comes with the naming of the LocalConnections.
> > > > Clearly each AVM1Loader instance wants to have a differently named
> > > > pair of LocalConnections; otherwise you'll get into trouble if 
> you're
> > > > trying to have two AVM1Loaders running together at the same time 
> - or
> > > > even two instances of the same Flex app running together at the same
> > > > time.
> > > >
> > > > Generating a unique ID is easy, but I can't for the life of me work
> > > > out how to communicate it to the contained AVM1 file.
> > > >
> > > > The obvious way would be to pass it as a parameter: e.g.
> > > > _loader.load(new URLRequest("AVM1File.swf?key="+someUniqueKey));
> > > >
> > > > That works, but only (apparently) once. The next time you try to 
> load
> > > > AVM1File.swf with a _different_ key (under a whole new instance of
> > > > AVM1Loader) something very odd happens. The key value does get
> > > > transmitted correctly on the second run, but the _root of the
> > > > contained movie gets screwed up.
> > > >
> > > > These simple trace statements are on the root of AVM1File.swf:
> > > >
> > > > trace(_root);
> > > > trace(_root.clip); // (Clip is an instance defined on the stage of
> > > > AVM1File)
> > > > trace(_parent);
> > > >
> > > > On the first (successful) load (i.e. loading
> > > > "AVM1File.swf?key=someUniqueKey"), I get:
> > > > "_root"
> > > > "_root.clip"
> > > > "undefined"
> > > >
> > > > Which is as expected. On the second run through (i.e. loading
> > > > "AVM1File.swf?key=someOtherKey"), I get:
> > > >
> > > > "_root"
> > > >
> > 
> "_level0.App0.Panel4.contentPane.AVM1Loader40.instance55.instance56.clip"
> > > >
> > "_level0.App0.Panel4.contentPane.AVM1Loader40.instance55"
> > > >
> > > > Which is very strange - suddenly my AVM1 code is seeing its AVM2
> > > > instance name. And from that point on, the AVM1 code stops working
> > > > correctly - loading clips etc. fails.
> > > >
> > > > If I change the URL to just "AVM1File.swf" it all works fine, but
> > > > obviously my unique key doesn't get transmitted. Similarly, 
> fixing the
> > > > URL - sending "AVM1File.swf?key=dummy" each time - works fine.
> > > > Somethings up when you alter the parameter.
> > > >
> > > > It's a new instance of Loader() - I'm not reusing anything.
> > > >
> > > > So - that's clearly some sort of bug, and I seem to have hit a blank
> > > > wall there. If anyone's got any ideas on that peculiarity then 
> great.
> > > >
> > > > But that aside, if anyone's got any brainwaves on how to simply
> > > > communicate a unique ID to an AVM1 file I'm loading, that'd be 
> great.
> > > > :-)
> > > >
> > > > Yours in frustration,
> > > > Ian
> > > >
> > > >
> > >
> > >
> > >
> > >
> > >
> >
> >
>
>  



--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/flexcoders/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/flexcoders/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:[EMAIL PROTECTED] 
    mailto:[EMAIL PROTECTED]

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to