Dias atrás me deparei com o erro abaixo:
Esse erro ocorria sempre ao acessar dois módulos que tivessem DataGrid com eventos de clique. Acessando o primeiro módulo, tudo funcionava perfeitamente, porém ao acessar o segundo módulo e clicar em qualquer parte da DataGrid, o erro surgia.
Após várias pesquisas acabei encontrando duas soluções.
1ª Solução:
Mude o modo de linkagem do framework para Runtime Shared Library (RSL), disponível em:
Project Properties | Flex Build Path | Library Path | Framework linkage
Conforme na imagem abaixo:
2ª solução:
Mude o Application Domain do ModuleLoader para currentDomain.
var Mod:ModuleLoader = new ModuleLoader(); Mod.applicationDomain = ApplicationDomain.currentDomain;
Pronto, utilizando qualquer uma das soluções seu projeto agora funcionará perfeitamente.
Divirta-se.
6 Response Comments
Oi, Igor.
Será que isso não poderia ser consertado instanciando o DragManager no Application, ao invés de em um dos módulos? Sei que isso acontece com Singletons dentro do Flex.
http://livedocs.adobe.com/flex/3/html/help.html?content=modular_2.html
“The solution is to ensure that managers such as PopUpManager and DragManager and any other shared services are defined by the main application (or loaded late into the shell’s application domain). When you promote one of those classes to the shell, the class can then be used by all modules. Typically, this is done by adding the following to a script block:”
Olá Gabriela,
Imagino que resolveria sim o problema. Porém no meu caso em nenhum dos módulos eu estava instanciando o DragManager, talvez o Flex tivesse instanciando automaticamente por causa do datagrid e por isso imagino que ele deveria conseguir se virar sozinho com essa responsabilidade.
Como ele não conseguiu, essa solução foi a que me resolveu o problema.
Abraços.
por que resolveu o problema? como?
Carlos, imagino que o problema seja resolvido pelo fato da forma que o Flash Player faça o gerenciamento das instâncias do DragManager dos módulos quando o framework está marcado para merged e quando está shared. E o shared talvez trabalhe de maneira correta com isso o erro não ocorra.
Igor, muito obrigado pelo post!!
eu estava com o exato mesmo problema e resolveu!
abraço!
Obrigado Igor, resolveu mesmo.
Abraço!