Segue trechos do meu código onde adiciono listeners para o swf
carregado e invoco método do mesmo quando já carregado e criado.
Caso nao entenda pergunta aê.
private function abrirTelaConsultaRealizada():void{
loaderConsultaRealizada = new LoaderModule();
loaderConsultaRealizada.addEventListener(ModuleEvent.READY,
loaderConsultaRealizadaOnReady);
loaderConsultaRealizada.url = ;
loaderConsultaRealizada.loadModule();
}
private function loaderConsultaRealizadaOnReady(event:ModuleEvent):void
{
window = new TitleWindowRmR();
window.icon = (loaderConsultaRealizada.child as Object).icon;
window.title = "Realizando Consulta do Paciente: "+
consultaUtils.filaSelecionada.noPaciente;
window.label = "Realizando Consulta";
loaderConsultaRealizada.child.addEventListener
(FlexEvent.CREATION_COMPLETE,consultaRealizadaOnCreate);
window.open(loaderConsultaRealizada,containerModulos);
MostraCursor.removeBusyCursor();
}
private function consultaRealizadaOnCreate(event:Event):void{
(loaderConsultaRealizada.child as Object).obterConsulta
(0,consultaUtils.filaSelecionada.coFila);
}
On Sep 17, 5:39 pm, João Arcanjo <[email protected]> wrote:
> Boa noite pessoal,
>
> Estou a tentar criar um carregador de .Swfs dinâmico,e que Invoque métodos
> do Swf carregado.
>
> Versão do Flex: 3.0;
>
> Recebendo um XML desta forma:
>
> <module label="DIÁRIOS">
>
> <Funcionalidade label="Produtividade " data='ProdIndFlex.swf'
> SearchData='SearchBoxProd'/>
>
> <Funcionalidade label="Catalogação de Imagens"
> data='ChangeDataProvider.swf' SearchData='SearchBoxCat'/>
>
> <Funcionalidade label="Processos novos no '40' " data='SWFLoaded.swf'
> SearchData='SearchBoxPr40'/ />
>
> <Funcionalidade label="Processos no BACKLOG" />
>
> </module >
>
> <module label="SEMANAIS">
>
> <Funcionalidade label="Pr1" data='accordionRepeater.swf' />
>
> <Funcionalidade label="Pr310" />
>
> <Funcionalidade label="ProXpto" />
>
> </module >
>
> *Populo um accordion.*
>
> (O meu SWFLoader: )
>
> <mx:VBox horizontalAlign="left" verticalAlign="top" width="100%" height="
> 100%" >
>
> <mx:SWFLoader id="myLoader3" width="100%" height="100%" trustContent="true"
> complete="onCompleteAppLoader(event); "/>
>
> </mx:VBox>
>
> *E ao carregar num label, vou carregar o swf no Swfloader desta forma:*
>
> [*Bindable*]*public* *var* *_appLoaded*:Application;
>
> *private* *function* activateLoader(event:Event):*void*{
>
> myLoader3.source=*''*;
>
> * //myloader3.source=event.currenttarget.selectedit...@data;
> *
>
> myLoader3.load(event.currenttarget.selectedit...@data);
>
> myLoader3.scaleContent=*true*; *
> *
>
> }
>
> *private* *function* onCompleteAppLoader(oEvent:Event):*void
> *
>
> {
>
> * var* smAppLoaded:SystemManager =
> SystemManager(oEvent.target.content); *//get a ref to the loaded app
> *
>
> smAppLoaded.addEventListener(FlexEvent.APPLICATION_COMPLETE,
> onCurrentApplicationComplete);
>
> }
>
> *private* *function* onCurrentApplicationComplete(oEvent:Event):*void
> *
>
> {
>
> _appLoaded = Application(oEvent.target.application);
>
> * var* sUrl:String = _appLoaded.url;*
> *
>
> *
> *
>
> * *}
>
> *Os SWFS gostaria que fossem externos. *
>
> *O meu objectivo é invocar um método do SWF carregado.*
>
> * Mas só consigo de fizer com o nome da classe :*
>
> SWFLoaded(_appLoaded).doComponentSearch(searchArray);
>
> ---- ou ------
>
> ChangeDataProvider(_appLoaded).doComponentSearch(searchArray);
>
> Estes dão porque estão no mesmo projecto mas não dá para Swfs gerados por
> outro projecto... Ou seja não há SWFS externos....* (duvida 2)*
>
> *Já tentei:*
>
> *var* c:Class =
> myLoader3.loaderInfo.applicationDomain.getDefinition(className) *as* Class;
>
> c(_appLoaded).doComponentSearch(searchArray);
>
> *** *
>
> *Tb já tentei:*
>
> *var** remoteSWF:Object = myLoader3.content as** Object;*
>
> *remoteSWF.doComponentSearch(searchArray); ** *
>
> * *
>
> *O que eu queria:*
>
> * appLoaded.doComponentSearch(searchArray); **(duvida 1)*
>
> * Alguem sabe o que fazer?*
>
> **
>
> Obrigado por terem lido este testamento (desculpem)
>
> [[]]
>
> João
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---