Rick.Web 0 Denunciar post Postado Outubro 20, 2010 Olá pessoal, Sou novato em AS3, e estou com um problema em relação a um preloader que tem por comando carregar arquivos SWF's externos. Bom, quando um link é clicado para chamar o arquivo externo, o preloader é acionado para carregar o arquivo. Até ai está ok, o preloader está fazendo o carregamento do SWF certinho. Problema: Quando clico no link (home), o arquivo começa a ser carregado e o percentual é mostrado na tela, o problema é que, "se" enquanto o SWF do 1º link (home) estiver carregando e o 2º link (empresa) for acionado, o SWF do 1º link continua a carregar juntamente com o SWF do 2º link, o que acaba virando um congestionamento... Obs.1: A medida que vou clicando nos link's sem esperar até que o outro seja totalmente carregado, o filme fica mais pezado.../ Obs.2: Estive a procura de uma solução em vários foruns porem não consigui resolver o problema, o código usado para cancelar o carregamento, é close(), porém não estou sabendo como adequalo ao meu script... Abaixo segue meu código: MAIN_FRAME ----------------- import flash.net.URLRequest; import flash.events.Event; import flash.net.URLLoader; flash.text.Font; // Declaração de variáveis var linke:URLRequest = new URLRequest("home.swf"); mcCarrega.gotoAndPlay("carregando"); // Eventos de Btn's home.addEventListener(MouseEvent.CLICK, clica); contato.addEventListener(MouseEvent.CLICK, clica); // Função; function clica(e:Event):void { switch (e.currentTarget) { case (home) : linke = new URLRequest("home.swf"); break; case (contato) : linke = new URLRequest("contatos.swf"); break; } mcCarrega.gotoAndPlay("carregando"); } mcCarrega(MC)>>quadro 20 (onde se encontra o preloader) ----------------- stop(); import flash.display.Loader; import flash.events.Event; import flash.events.ProgressEvent; import flash.events.MouseEvent; flash.text.Font; // Declaração de variável var carrega:Loader = new Loader(); // Carregando a pág. escolhida dentro da var carrega carrega.load(MovieClip(root).linke); // Verificação de Eventos de Carregamento carrega.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, carregando); carrega.contentLoaderInfo.addEventListener(Event.COMPLETE, completo); // Funções function carregando(evt:ProgressEvent):void{ var percent:Number = evt.bytesLoaded/evt.bytesTotal; var percTot; percTot = Math.floor(percent*100)+""; cc5.text = percTot +"%"; //trace(percTot); } function completo(e:Event):void{ MovieClip(root).conteudo.removeChildAt(0); MovieClip(root).conteudo.addChild(carrega); perc.removeEventListener(Event.ENTER_FRAME, percSegueMouse); gotoAndPlay("completo"); } Obs.3: Fiz este de acordo com um tutorial do mxmaster, caso queira compreender melhor, veja este. Bom, desde já agradeço a quem poder me ajudar. Compartilhar este post Link para o post Compartilhar em outros sites
RafaelMac 0 Denunciar post Postado Outubro 21, 2010 Fala Rick, tudo bem? Para não congestionar o seu loader, ao clicar em algum botão, eu removeria o evento de carregamento para zerar os valores, e logo em seguida o adicionaria novamente, para que possa carregar o novo objeto clicado. Veja se funciona assim: function clica(e:Event):void { switch (e.currentTarget) { case (home) : carrega.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, carregando); carrega.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, carregando); linke = new URLRequest("home.swf"); break; case (contato) : carrega.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, carregando); carrega.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, carregando); linke = new URLRequest("contatos.swf"); break; } mcCarrega.gotoAndPlay("carregando"); } Olá pessoal, Sou novato em AS3, e estou com um problema em relação a um preloader que tem por comando carregar arquivos SWF's externos. Bom, quando um link é clicado para chamar o arquivo externo, o preloader é acionado para carregar o arquivo. Até ai está ok, o preloader está fazendo o carregamento do SWF certinho. Problema: Quando clico no link (home), o arquivo começa a ser carregado e o percentual é mostrado na tela, o problema é que, "se" enquanto o SWF do 1º link (home) estiver carregando e o 2º link (empresa) for acionado, o SWF do 1º link continua a carregar juntamente com o SWF do 2º link, o que acaba virando um congestionamento... Obs.1: A medida que vou clicando nos link's sem esperar até que o outro seja totalmente carregado, o filme fica mais pezado.../ Obs.2: Estive a procura de uma solução em vários foruns porem não consigui resolver o problema, o código usado para cancelar o carregamento, é close(), porém não estou sabendo como adequalo ao meu script... Abaixo segue meu código: MAIN_FRAME ----------------- import flash.net.URLRequest; import flash.events.Event; import flash.net.URLLoader; flash.text.Font; // Declaração de variáveis var linke:URLRequest = new URLRequest("home.swf"); mcCarrega.gotoAndPlay("carregando"); // Eventos de Btn's home.addEventListener(MouseEvent.CLICK, clica); contato.addEventListener(MouseEvent.CLICK, clica); // Função; function clica(e:Event):void { switch (e.currentTarget) { case (home) : linke = new URLRequest("home.swf"); break; case (contato) : linke = new URLRequest("contatos.swf"); break; } mcCarrega.gotoAndPlay("carregando"); } mcCarrega(MC)>>quadro 20 (onde se encontra o preloader) ----------------- stop(); import flash.display.Loader; import flash.events.Event; import flash.events.ProgressEvent; import flash.events.MouseEvent; flash.text.Font; // Declaração de variável var carrega:Loader = new Loader(); // Carregando a pág. escolhida dentro da var carrega carrega.load(MovieClip(root).linke); // Verificação de Eventos de Carregamento carrega.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, carregando); carrega.contentLoaderInfo.addEventListener(Event.COMPLETE, completo); // Funções function carregando(evt:ProgressEvent):void{ var percent:Number = evt.bytesLoaded/evt.bytesTotal; var percTot; percTot = Math.floor(percent*100)+""; cc5.text = percTot +"%"; //trace(percTot); } function completo(e:Event):void{ MovieClip(root).conteudo.removeChildAt(0); MovieClip(root).conteudo.addChild(carrega); perc.removeEventListener(Event.ENTER_FRAME, percSegueMouse); gotoAndPlay("completo"); } Obs.3: Fiz este de acordo com um tutorial do mxmaster, caso queira compreender melhor, veja este. Bom, desde já agradeço a quem poder me ajudar. Compartilhar este post Link para o post Compartilhar em outros sites
Rick.Web 0 Denunciar post Postado Outubro 21, 2010 Olá RafaelMac, muito obrigado por se importar em me ajudar! Intão, essa é a maneira a qual pretendo usar ("eu removeria o evento de carregamento para zerar os valores") em meu script, daí que tentei usar o jeito que você citou, porém houve um erro: "1120: Acess of undefined property carrega." "1120: Acess of undefined property carregando." Também usei da seguinte forma, isso pensando em acessar primeiro o MC para dp acessar a var e a função: MovieClip(root)mcCarrega.carrega.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, carregando); MovieClip(root)mcCarrega.carrega.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, carregando); Deu o mesmo erro. Bom, pelo que entendo ("sou muito leigo em AS3..."), o comando não pode acessar a variável ("carrega") e nem a função ("carrega"), acho que pelo fato dessa var e dessa função não estarem no mesmo frame (principal) já que elas estão em outro frame dentro de uma MC ("mcCarrega"). Por favor me corrijam se estiver errado ("Não é errando que se aprende, mas, errando e corrigindo é que se aprende"). Peço sua ajuda novamente e quem estiver interesse em me ajudar, desde já, MUITO OBRIGADO!! Ficarei no aguardo. Compartilhar este post Link para o post Compartilhar em outros sites
Rick.Web 0 Denunciar post Postado Outubro 21, 2010 Muito obrigado RafaelMac pela sua ajuda!! Mas FELISMENTE encontrei a solução, para dizer a verdade não é uma solução, mas, agora sei o porque do tal "congestionamento": Usei o "close()" que tem por função interromper (fechar) o "load()" (ou seja, interromper um carregamento), mas mesmo assim o congestionamento persistia... beleza, depois de várias horas pesquisando descobri que no Flash IDE ele não funciona, mas na página de internet ele funciona corretamente. Bom, é isso ae. Mais uma vez, vlw pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites