Dias atrás me deparei com o erro abaixo:

Não é possível converter DragManagerImpl em IDragManager

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:

DragManagerSolution

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.

About Author

You may also like

6 Response Comments

  • Gabriela  05/01/2010 at 09:44

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

    • Igor Musardo  05/01/2010 at 09:58

      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.

  • Carlos  05/01/2010 at 11:50

    por que resolveu o problema? como?

    • Igor Musardo  05/01/2010 at 13:12

      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.

  • Vinícius  13/05/2010 at 11:00

    Igor, muito obrigado pelo post!!
    eu estava com o exato mesmo problema e resolveu!

    abraço!

  • Luciano Fuza  09/03/2011 at 19:53

    Obrigado Igor, resolveu mesmo.
    Abraço!