cara eu uso modulos PRA TUDO e nunca tive esse tipo de problema ate por que
na teoria, quando voce carrega um modulo ele meio que vem zerado ou seja ele
e recriado.

pergunta e.

Ta usando referencia fraca nos listners, destruindo as variaveis antes de
descarregar o modulo pra nao ficar nada ?
lembra que os modulos sempre fica uns lixos na memoria.

2011/2/4 Diego Hordi <diego.ho...@gmail.com>

> Pessoal,
>
> Situação:
> Estou desenvolvendo um projeto, cuja tela principal deverá conter um
> ModuleLoader que carregará vários módulos ao longo da existência da
> aplicação, existindo a possibilidade de um módulo ser recarregado
> também várias vezes, caso o usuário queira, por exemplo, entrar no
> módulo de fornecedores, sair, ir para o módulo de clientes, sair e
> voltar para o módulo de fornecedores.
>
> Problema:
> Os módulos funcionam perfeitamente na primeira vez em que são
> carregados, porém, na segunda vez que são carregados, alguns
> componentes, como o DataGrid, por exemplo, ao disparar o evento
> ListEvent, não passam a linha atual para a propriedade
> itemRenderer.data do evento. Já coloquei e tirei o SDK da RSL, já
> troquei a versão do SDK, troquei o ModuleLoader da tela principal por
> um ViewStack, mas nada de funcionar corretamente. Atualmente estou
> utilizando o SDK 3.4 (merged into code). Abaixo um trecho do meu
> componente NavigationContext, que dentre outras coisas, gerencia o
> carregamento dos módulos:
>
> [code]
> package br.com.hordi.rechapps.view.utils{
>
>        import br.com.hordi.rechapps.view.forms.LoadingProgressForm;
>
>        import mx.core.Application;
>        import mx.events.ModuleEvent;
>        import mx.modules.ModuleLoader;
>        import mx.resources.ResourceManager;
>        import flash.events.EventDispatcher;
>
>        [Resource("exceptions")]
>        public class NavigationContext extends EventDispatcher{
>
>                private static var instance:NavigationContext;
>                [Bindable] private var moduleLoader:ModuleLoader;
>                [Bindable] private var
> loadingProgressForm:LoadingProgressForm;
>
>                public function NavigationContext(
> enforcer:SingletonEnforcer ){
>                        if( !enforcer ){
>                                throw new
> Error( ResourceManager.getInstance().getString( "exceptions",
> "SingletonInstanceException" ) );
>                        } else {
>                                loadingProgressForm =
> LoadingProgressForm.getInstance();
>                        }
>                }
>
>                public static function getInstance():NavigationContext{
>                        if( instance == null ){
>                                instance = new NavigationContext( new
> SingletonEnforcer() );
>                        }
>                        return instance;
>                }
>
>                public function browse( url:String ):void{
>                        moduleLoader = new ModuleLoader();
>                        moduleLoader.addEventListener(ModuleEvent.READY,
> function(event:ModuleEvent):void{
>                                loadingProgressForm.hide();
>                                for( var idx:Number = 0; idx <
> Application.application.modulesContainer.getChildren().length; idx++ )
> {
>                                        var unusedModule:ModuleLoader =
> Application.application.modulesContainer.getChildAt( idx ) as
> ModuleLoader;
>
> Application.application.modulesContainer.removeChild( unusedModule );
>                                        unusedModule.unloadModule();
>                                }
>
>  Application.application.modulesContainer.addChild( moduleLoader );
>
>  Application.application.modulesContainer.selectedIndex =
> (Application.application.modulesContainer.getChildren().length-1);
>                        });
>                        moduleLoader.addEventListener(ModuleEvent.PROGRESS,
> function(event:ModuleEvent):void{
>                                loadingProgressForm.setProgress(
> Math.ceil((event.bytesLoaded /
> event.bytesTotal)*100), 100 );
>                                loadingProgressForm.label = "Carregando
> módulo - " +
> Math.ceil((event.bytesLoaded / event.bytesTotal)*100) + "%";
>                                loadingProgressForm.title = "Carregando...";
>                        });
>                        moduleLoader.loadModule( url );
>                        loadingProgressForm.show();
>                }
>
>        }
>
> }
>
> class SingletonEnforcer{}
> [/code]
>
> OBS: Deixei os listeners do moduleLoader inline mesmo, porque ainda
> estou tentando outras soluções para o problema.
>
> Se alguém puder ajudar, agradeço bastante!
>
> Um abraço!
> Diego Hordi
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
> Para sair da lista, envie um email em branco para
> flexdev-unsubscr...@googlegroups.com
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev




-- 
*Hélio Antonio Fransico Silva*
Desenvolvedor web
Certificado Flash developer
Certificado Flash Design
Certificado web developer
Consultor Microsiga / Totvs
Desenvolvedor ADVPL / ASP
Analista de sistemas e ERP Sênior.

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a