Naty 3 Denunciar post Postado Janeiro 27, 2010 Olá gente td bom ? Finalmente estou terminando este meu projeto que já faz 6 meses que estou trabalhando nele....aprendi mto, mais também estou tomando cada baile.... Bom minha última dúvida, acredito eu, neste projeto é: Em minha home é o meu swf central, tudo o que os menus chamam aparece na home. Estou fazendo sendo tudo swf individual, pois acredito que fica mto mais organizado. Porém acontece um problema.... na parte das galerias (Futebol, Volei, Handall, etc) cada peça de roupa irá abrir um swf individual, onde estou fazendo atraves de xml, até ai beleza. Porém com este swf aberto na Home caso eu queira navegar pelos menus não consigo fazer um unload() dele, pois está variavel esta em outro swf (seria um 3º swf) onde não consigo fazer a comunicação com a Home, onde estão os menus. E agora como solucionar este problema ?? Há um jeito de acessar esta variavel Loader no swf Home, estando em um outro swf ? Disponibilizo meu Fla aki ou o link do site site, mais aviso que o arquivo tem 12mb, pois é o site inteiro... Bjinhos Compartilhar este post Link para o post Compartilhar em outros sites
DanielGianni 0 Denunciar post Postado Janeiro 27, 2010 dê uma olha em outro post http://forum.imasters.com.br/index.php?/topic/380231-shared-objects/ nele eu explico como fazer comunicação entre SWF. Compartilhar este post Link para o post Compartilhar em outros sites
Naty 3 Denunciar post Postado Janeiro 28, 2010 então eu li extamente este topico, porem nao entendi mto bem como fazer.... é só colocar este 2 codigos que você mostra ? swf 1 (receptor) var conexaoLocal_Receptor:LocalConnection = new LocalConnection(); conexaoLocal_Receptor = this; conexaoLocal_Receptor.connect("minhaConexao"); var situacaoHipotetica:Boolean = new Boolean(true); function statusSituacao(valor:boolean):void { situacaoHipotetica = valor; trace(situacaoHipotetica); } swf 2 (emissor) var conexaoLocal_Emissor:LocalConnection = new LocalConnection(); conexaoLocal_Emissor.send('minhaConexao','statusSituacao','false'); conexaoLocal_Emissor.addEventListener(StatusEvent.STATUS, funcionou); function funcionou(event:StatusEvent){ switch (event.level) { case "error": trace("Houston... qqqrrrrssssss ... temos problemas!"); break; case "status": trace("Opa a ordem foi recebida e executada Sr."); break; default:break; } } E pronto ? como chamar a minha variavel que quero trabalhar ? por exemplo nesta parte do meu codigo function clicouMenu (evt:MouseEvent) { ofertasLoader.visible = true // conteudoFutebolLoader.unload() conteudoVoleiLoader.unload() conteudoBasqueteLoader.unload() conteudoFitnessLoader.unload() conteudoHandballLoader.unload() conteudoAtletismoLoader.unload() // mcModalidade.visible = false empresaLoader.unload() tecnologiaLoader.unload() patrocinioLoader.unload() linhaBrasilLoader.unload() comemorativaLoader.unload() localizacaoLoader.unload() contatoLoader.unload() // mcOrcamento.visible = false conteudoOrcamentoCRColLoader.unload() conteudoOrcamentoCalcoesLoader.unload() conteudoOrcamentoMeiaoLoader.unload() // switch (evt.target) { case home: animamcHome.startTransition ({ type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) mcModalidade.visible = true break; case empresa: mcModalidade.visible = false empresaLoader.load(empresaRequest) mcEmpresa.addChild(empresaLoader) // empresaLoader.x = 425 empresaLoader.y = 212.4 // antiGC.push(animamcEmpresa); animamcEmpresa.startTransition ({ type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) // addChild(mcEmpresa) break; case linhaBrasil: ofertasLoader.visible = false mcModalidade.visible = false linhaBrasilLoader.load(linhaBrasilRequest) mcLinhaBrasil.addChild(linhaBrasilLoader) // linhaBrasilLoader.x = 0 linhaBrasilLoader.y = 0 animamcLinhaBrasil.startTransition ({ type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) addChild(mcLinhaBrasil) break; case comemorativa: ofertasLoader.visible = false mcModalidade.visible = false comemorativaLoader.load(comemorativaRequest) mcComemorativa.addChild(comemorativaLoader) // comemorativaLoader.x = 0 comemorativaLoader.y = 0 animamcComemorativa.startTransition ({ type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) addChild(mcComemorativa) break; case tecnologia: ofertasLoader.visible = false mcModalidade.visible = false tecnologiaLoader.load(tecnologiaRequest) mcTecnologia.addChild(tecnologiaLoader) // tecnologiaLoader.x = 0 tecnologiaLoader.y = 0 // animamcTecnologia.startTransition ({ type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) addChild(mcTecnologia) break; case localizacao: mcModalidade.visible = false localizacaoLoader.load(localizacaoRequest) mcLocalizacao.addChild(localizacaoLoader) // localizacaoLoader.x = 425 localizacaoLoader.y = 212.4 animamcLocalizacao.startTransition ({ type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) addChild(mcLocalizacao) break; case patrocinio: mcModalidade.visible = false patrocinioLoader.load(patrocinioRequest) mcPatrocinio.addChild(patrocinioLoader) // patrocinioLoader.x = 425 patrocinioLoader.y = 212.4 animamcPatrocinio.startTransition ({ type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) addChild(mcPatrocinio) break; case contato: mcModalidade.visible = false contatoLoader.load(contatoRequest) mcContato.addChild(contatoLoader) // contatoLoader.x = 425 contatoLoader.y = 212.4 animamcContato.startTransition ({ type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) addChild(mcContato) } } Nesta função são os menus da minha Home.swf nele eu dou unload() em td q é chamado p/ não se sobrepor... mais como o 3 swf é chamado atraves do futebol.swf nao tenho como acessa-lo pelo home.swf... ai com este teu codigo eu acesso, certo ? Porem como manipular... ? if(conteinerPagina) if(conteinerPagina.parent ) conteinerPagina.parent.removeChild(conteinerPagina); ou conteinerPagina.visible = false ainda vou testar o que fica melhor.... rsrsr Compartilhar este post Link para o post Compartilhar em outros sites
DanielGianni 0 Denunciar post Postado Janeiro 28, 2010 Naty na verdade seu problema é comunicação bidirecional, vai precisar de um localconection emissor e receptor em cada ponta. Não basta copiar meu código porque a lógica que você precisa é diferente... mas vamos lá vou explocar detalhadamente e se você não conseguir codificar assim que eu tiver 1 tempinho eu faço o código para você (genérico é claro). Vamos lá então... Para entender como o LocalConnection funciona vamos simplificar as coisa da seguinte maneira: Temos 2 swf, um patrão e outro funcionário! O swf patrao.swf manda o funcionario.swf realizar algumas tarefas. Cada linha send do patrao.swf manda o funcionario.swf realizar alguma coisa (chama um método do funcionario.swf responsável por fazer algo) Muitas vezes o patrão precisa além de mandar o funcionário fazer alguma tarefa passar algumas instruções adicionais (essas instruções são os parâmetros necessários para o funcionário realizar a tarefa que o patrão mandou fazer) No seu caso seria mais ou menos assim: 1) O Patrão manda o funcionário fazer uma fotocópia de um documento. 2) Para isso o patrão tira o telefone do gancho e logo toca no ramal do funcionário. 3) O funcionário atende e o patrão diz corrija este memorando para mim. 4) O patrão então já havia despachado o documento pelo officeboy quando tirou o telefone do ganho, então simultaneamente a ligação o funcionário ja recebe do officeboy o memorando 5) O funcionário faz a correção do memorando. O código que eu mostrei para exatamente ai, é algo do tipo mestre e escravo, não há retorno para o mestre! Já no seu caso você precisa que o funcionário devolva o memorando corrigido para o patrão, entendeu o porque é bidirecional? O funcionário vai ter que fazer quase o mesmo processo que o patrão fez!!! A continuação seria... 6) O funcionário despacha o memorando corrigido pelo officeboy e liga para o ramal do patrão. 7) Quando o patrão atende o officeboy já está com o documento na frente dele. 8) O funcionário então diz patrão pegue seu memorando já corrigido. 9) O patrão então pega o memorando corrigido. então o patrão é emissor quando manda o funcionário fazer algo, nesse momento o funcionário é receptor. depois o patrão é receptor quando o funcionário manda o patrão pegar, nesse momento o funcionário é emissor. portanto você precisa de 1 localconnection com nome por exemplo patrao-funcionario e 1 localconnection com o nome funcionario-patrao, entendeu? é um para cada sentido da comunicação. Escrevi muito, espero ter sido didático o suficiente para você conseguir codificar a lógica ai, senão avisa aqui que como falei no começo eu tendo um tempinho tenho o maior prazer em escrever um código exemplo pra ti. Compartilhar este post Link para o post Compartilhar em outros sites
Naty 3 Denunciar post Postado Janeiro 28, 2010 Daniel, nossa é bem complexo viu... rsrsr Eu ainda não vi nada parecido sobre isso.... vou var uma vasculhada no google então sobre este tipo de conexão que é comunicação bidirecional.... O problema é colocar a lógica em código... isso sim é que é dificil... pq eu ainda sou uma programadora iniciante... este site que estou fazendo esta sendo o primeiro projeto dps de 2 cursos na Impacta em SP.... então realmente p/ mim é mto dificil criar a logica e colocar em codigo... qdo tenho um codigo "generico" como você mesmo diz fica mais facil "visualizar" a lógica a ser empregada... Espero que você não me ache folgada... mais qdo você puder então me explica em codigo.... Mais já vou dando uma vasculhada no pai google...rsrsr Mto obrigada pela explicação e pela atenção... vou ficar esperando então... Bjinhos Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Janeiro 29, 2010 ... é comunicação bidirecional, vai precisar de um localconection emissor e receptor em cada ponta. ... eu tendo um tempinho tenho o maior prazer em escrever um código exemplo. Quando for possível, fica legal publicar na sessão de artigos e tutoriais do fórum. Será útil a muitos usuários, e terá maior visibilidade. A explicação está excelente, com um código genérico de exemplo, fica perfeito. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Naty 3 Denunciar post Postado Janeiro 29, 2010 Pronto nada como uma busca no Google... Isso seria o codigo baseado nas minhas necessidades // é o loader filho da home futebolLoader.addEventListener(MouseEvent.CLICK, clicou) futebolLoader.addEventListener(MouseEvent.MOUSE_OVER, over) futebolLoader.addEventListener(MouseEvent.MOUSE_OUT, out) // var conteudoFutebolRequest:URLRequest = new URLRequest("futebol.swf") var conteudoFutebolLoader:Loader = new Loader // var conteudoFutebol:MovieClip var mc_futebol:MovieClip = new MovieClip // var conteinerConteudoFutebol:MovieClip = new MovieClip var animaConteudoFutebol:TransitionManager = new TransitionManager(conteinerConteudoFutebol) // conteudoFutebolLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); function onComplete(evt:Event){ conteudoFutebol = conteudoFutebolLoader.content as MovieClip; addChild(conteudoFutebolLoader); } function handleClick(evt:Event = null) { try { conteudoFutebol.paginaLoader.alpha = 0; // add ele como transparente p/ nao atrapalhar a evoluçao dos bts - paginaLoader é a variavel dinamica que se encontra no meu arquivo "futebol.swf" conteudoFutebol.paginaLoader.unload() // como eu só precisava dar um unload nela... } catch (er:Error) { //trace(er.message); } } // vou aplicar no meu switch function clicouMenu (evt:MouseEvent) { ofertasLoader.visible = true // conteudoFutebolLoader.unload() conteudoVoleiLoader.unload() conteudoBasqueteLoader.unload() conteudoFitnessLoader.unload() conteudoHandballLoader.unload() conteudoAtletismoLoader.unload() // mcModalidade.visible = false // empresaLoader.unload() maisProdutosLoader.unload() patrocinioLoader.unload() linhaBrasilLoader.unload() comemorativaLoader.unload() localizacaoLoader.unload() contatoLoader.unload() // orcamentoFutebolLoader.unload() orcamentoVoleiLoader.unload() orcamentoBasqueteLoader.unload() orcamentoFitnessLoader.unload() orcamentoHandballLoader.unload() orcamentoAtletismoLoader.unload() orcamentoColetesLoader.unload() orcamentoLBrasilLoader.unload() orcamentoComemorativaLoader.unload() orcamentoMProdutosLoader.unload() // mcOrcamento.visible = false // handleClick(); // antes de clicar e carregar o bt selecionado unload() na variavel q esta load() no stage... // switch (evt.target) { case home: mcModalidade.visible = true animamcHome.startTransition ({type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) break; case empresa: mcModalidade.visible = false animamcEmpresa.startTransition ({type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) empresaLoader.load(empresaRequest) mcEmpresa.addChild(empresaLoader) addChild(mcEmpresa) empresaLoader.x = 425 empresaLoader.y = 212.4 break; case linhaBrasil: ofertasLoader.visible = false mcModalidade.visible = false animamcLinhaBrasil.startTransition ({type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) linhaBrasilLoader.load(linhaBrasilRequest) mcLinhaBrasil.addChild(linhaBrasilLoader) addChild(mcLinhaBrasil) linhaBrasilLoader.x = 0 linhaBrasilLoader.y = 0 break; case comemorativa: ofertasLoader.visible = false mcModalidade.visible = false animamcComemorativa.startTransition ({type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) comemorativaLoader.load(comemorativaRequest) mcComemorativa.addChild(comemorativaLoader) addChild(mcComemorativa) comemorativaLoader.x = 0 comemorativaLoader.y = 0 break; case maisProdutos: ofertasLoader.visible = false mcModalidade.visible = false animamcMaisProdutos.startTransition ({type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) maisProdutosLoader.load(maisProdutosRequest) mcMaisProdutos.addChild(maisProdutosLoader) addChild(mcMaisProdutos) maisProdutosLoader.x = 0 maisProdutosLoader.y = 0 break; case localizacao: mcModalidade.visible = false animamcLocalizacao.startTransition ({type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) localizacaoLoader.load(localizacaoRequest) mcLocalizacao.addChild(localizacaoLoader) addChild(mcLocalizacao) localizacaoLoader.x = 425 localizacaoLoader.y = 212.4 break; case patrocinio: mcModalidade.visible = false animamcPatrocinio.startTransition ({ type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) patrocinioLoader.load(patrocinioRequest) mcPatrocinio.addChild(patrocinioLoader) addChild(mcPatrocinio) patrocinioLoader.x = 425 patrocinioLoader.y = 212.4 break; case contato: mcModalidade.visible = false animamcContato.startTransition ({ type:Fade, direction:Transition.IN, duration:3, easing:Strong.easeOut}) contatoLoader.load(contatoRequest) mcContato.addChild(contatoLoader) addChild(mcContato) contatoLoader.x = 425 contatoLoader.y = 212.4 break; } } Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Janeiro 29, 2010 Mais já vou dando uma vasculhada no pai google...rsrsr Beleza Naty, parabéns. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Legal compatilhar. Abraços Compartilhar este post Link para o post Compartilhar em outros sites