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

Responder a