Ok. But how would I instantiate another objects without knowing its name then?
Currently I rely on event.module.factory.create(), which is called on READY event. By not calling the load() method, it'll never reach the READY event again, so I'll be unable to use it. Hm... maybe storing the Class in the Registry item? Best regards, On Wed, Sep 17, 2008 at 8:49 PM, Alex Harui <[EMAIL PROTECTED]> wrote: > I looked at your code a bit more. I guess it makes sense. The > ModuleManager should be preventing double load() calls and what not, but I > would check ModuleInfo.ready and not call load() again if it is ready just > to be safe. > > > > Also make sure you aren't unloading a module that isn't fully loaded and > ready. > > > > Posting the stack traces you get might also help > > -Alex > > > > From: [email protected] [mailto:[EMAIL PROTECTED] On > Behalf Of Guilherme Blanco > Sent: Wednesday, September 17, 2008 3:57 PM > To: [email protected] > Subject: Re: [flexcoders] Multiple requests to load module do weird > behaviors in app > > > > Hi Alex, > > I never meant to get a ready to use code, I hate that. We only learn > something by doing things by yourself. I just want ideas, that's what > I asked for. > > I don't understand one point and maybe you can highlight me. > In the case I do not have the module loaded and I click twice (for > example), I have 2 requests to me called later (only when module is > ready). > > Suppose I decide to stack a method call and the module read event just > instantiate the class and call it each time it was scheduled in pipe. > In this situation, I'll have to instantiate through the class name (ie > var foo:* = new my.ns.ClassFoo();), which schedules module to load it > and the idea of module loading/unloading does not work. > > Another idea is to try to avoid the ModuleInfo.load() call. > In this situation, the module ready is never called again, so I'll be > unable to call again. This idea is not acceptable, since I may want to > open 2 tabs for example of the same module (for example... Create > Company tab). > > In all situations I've imagined, I still rely on ModuleEvent.READY. > Which means I must have to use the event to be able to not load the > module during compilation (only possible through > e.module.factory.create();). > So, it must call ModuleInfo.load() and also only instantiate instances > through e.module.factory.create(). > By adding these restrictions... I cannot imagine any other > implementation except the one I wrote. > > What does my idea do? > It only has a single ModuleInfo for each module to be loaded and > attach various READY listeners (once per click) to be called when load > is completed. > > Hum.... maybe looking at source now I can understand my issues. > I always attach my listeners to READY event and at the end of READY > event I dispatch the same event again. Maybe I'm in a recursive loop? > > Anyway, I'll try to address that.... > but if you have any other ideas, please share with me. I do not want > code ready, just the concept behind the code. Leave me to implement > it. > That's how I like to work. =) > > Thanks in advance, > > On Wed, Sep 17, 2008 at 5:29 PM, Alex Harui <[EMAIL PROTECTED]> wrote: >> I would try to build some way so you only request a module once >> >> >> >> From: [email protected] [mailto:[EMAIL PROTECTED] On >> Behalf Of Guilherme Blanco >> Sent: Wednesday, September 17, 2008 7:11 AM >> To: [email protected] >> Subject: [flexcoders] Multiple requests to load module do weird behaviors >> in >> app >> >> >> >> Hi, >> >> I'm currently working in an extremely big application written in Flex >> + PHP + Oracle. >> It's entirely controlled by modules and events dispatching and >> listenings to reduce memory overhead. >> Each app piece is a module which is loaded when requested to be viewed >> and unloaded when closed. >> >> To support this modules dependency, I have this small class that >> controls the Module loading in my application: >> >> http://pastebin.com/f73a59279 >> >> Static method Environment.getModuleURLFromPackage does something like: >> return module.replace( /\./gi, "/" ) + ".swf"; >> And I implemented a wrapper to DRY module load calls: >> >> public static function loadModule(module:String, handler:Function, >> showProgressInfo:Boolean = false):void >> { >> // Registry to prevent multiple instances of same module >> var m:AdvancedModuleLoader = AdvancedModuleLoader.create(module); >> >> m.showProgressInfo = showProgressInfo; >> m.addEventListener(ModuleEvent.READY, handler); >> m.load(); >> } >> >> The code to get it working is really simple: >> >> Environment.loadModule("modules.company.dialogs.CreateCompanyWindow", >> function (e:ModuleEvent):void >> { >> // Dialog creation >> var dialog:* = e.module.factory.create(); >> >> PopUpManager.addPopUp(dialog, Environment.getApplication(), true); >> PopUpManager.centerPopUp(dialog); >> }, true); >> >> In this example, it opens a module based TitleWindow, but there're a >> lot of other situations, like Canvas based Modules, FormItem based, >> etc. >> What's the issue here? >> If I keep calling this execution (for example click a lot of times in >> a button), there're different behaviors: >> >> 1- It freezes my application >> 2- It loads the first one and start to open alert messages "SWF is not >> loadable" (one per click) >> 3- It never finishes to load the module and fails silently >> 4- It loads the first one (but not the others), but never removes the >> progress bar >> >> The most reproduceable ones are numbers 2 and 4. >> >> Can someone please give me any idea how do I fix this? >> >> Thanks in advance, >> >> Best regards, >> >> -- >> Guilherme Blanco - Web Developer >> CBC - Certified Bindows Consultant >> Cell Phone: +55 (16) 9166-6902 >> MSN: [EMAIL PROTECTED] >> URL: http://blog.bisna.com >> Rio de Janeiro - RJ/Brazil >> >> > > -- > Guilherme Blanco - Web Developer > CBC - Certified Bindows Consultant > Cell Phone: +55 (16) 9166-6902 > MSN: [EMAIL PROTECTED] > URL: http://blog.bisna.com > Rio de Janeiro - RJ/Brazil > > -- Guilherme Blanco - Web Developer CBC - Certified Bindows Consultant Cell Phone: +55 (16) 9166-6902 MSN: [EMAIL PROTECTED] URL: http://blog.bisna.com Rio de Janeiro - RJ/Brazil

