Perfect!

I have enough info to solve everything by myself.


Thanks a lot!

On Wed, Sep 17, 2008 at 9:29 PM, Alex Harui <[EMAIL PROTECTED]> wrote:
> The ModuleInfo.factory should be valid.
>
>
>
> From: [email protected] [mailto:[EMAIL PROTECTED] On
> Behalf Of Guilherme Blanco
> Sent: Wednesday, September 17, 2008 5:06 PM
> To: [email protected]
> Subject: Re: [flexcoders] Multiple requests to load module do weird
> behaviors in app
>
>
>
> 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
>
> 



-- 
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

Reply via email to