Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rick.Web

[Resolvido] Problema com preloader de SWF externo AS3

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.