Ir para conteúdo

POWERED BY:

Arquivado

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

festamix

Limpar conteudo de um MC carregado

Recommended Posts

Olá a todos. Estou desesperado sem saber oq fazer para arrumar essa minha função de carregar. Ela está carregando um swf em cima de outro. Já tentei o removeChild, unload só que não sei se usei eles certo. Já peguei varios script diferentes de upload e todos resultam no mesmo problema. Falta apenas isto para eu acabar o projeto... Por favor, alguem me ajuda.

 

function loadPrincipal(load_mc:MovieClip, load_img:String):void {
if (load_mc == mc_conteudo.mc_conteudo_int1){
		mc_conteudo.visible = true;
}
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);

loader.load(new URLRequest(load_img));
function progressHandler(event:ProgressEvent):void
{
	var ratio:Number = event.bytesLoaded / event.bytesTotal;
	mcBar.scaleX = ratio;
}
function completeHandler(event:Event):void{	

	 mcBar.visible = false;
	load_mc.addChild(loader);
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz um loop pelo numChildren e vai removendo todos os conteúdos do load_mc

 

Exemplo:


var mc:MovieClip = new MovieClip();
addChild(mc);

var loader:Loader = new Loader();
loader.load(new URLRequest("http://forum.imasters.com.br/random_logos/logo2.png"));

mc.addChild(loader);


setTimeout(function(){
	for(var i:uint = 0; i < mc.numChildren; i++){
		mc.removeChildAt(0);
	}
}, 2000);

Coloquei para ele remover o conteúdo carregado após 2 segundos mas você não precisa fazer isso... basta fazer direto antes de carregar o novo conteúdo.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está dando o seguinte erro:

RangeError: Error #2006: O índice fornecido está fora dos limites.

at flash.display::DisplayObjectContainer/removeChildAt()

at _1_fla::MainTimeline/loadPrincipal()

at _1_fla::MainTimeline/funcbt_wallpaper()

 

Para chamar a função de carregar, eu estou usando a seguinte action:

mc_menu.mc_menu_bot.bt_wallpapers.addEventListener(MouseEvent.CLICK,funcbt_wallpaper);
function funcbt_wallpaper(evt:MouseEvent){	
	mcBar.visible = true;
	loadPrincipal(mc_conteudo.mc_conteudo_int1, "3.wallpaper.swf");	
}
E assim acontece com outros botões também.

Coloquei o removeChildAt dentro do if inicial, pois a limpeza deve ser acionada apenas para um mc.

if (load_mc == mc_conteudo.mc_conteudo_int1){
                mc_conteudo.visible = true;
                load_mc.removeChildAt(0);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você verificou se existe algum Child no elemento que você ta procurando?

 

Pois eu não sei como o flash ta interpretando isso: load_mc == mc_conteudo.mc_conteudo_int1

Ao meu ver o erro ta ai...

 

Tentou fazer mc_conteudo.mc_conteudo_int1.removeChildAt(0)?

E verificou se tem child com:

mc_conteudo.mc_conteudo_int1.numChildren?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kra, ali no load_mc == mc_conteudo.mc_conteudo_int1 andei colocando um trace, e ele aparentemente funciona certo. Só esteja ocorrendo algum erro q não estou conseguindo ver. Quanto ao mc_conteudo.mc_conteudo_int1.removeChildAt(0), já tentei sim. Fiquei na mesma. Uma coisa muito interessante que você falou foi do mc_conteudo.mc_conteudo_int1.numChildren. Não sei o que é isso... O mc_conteudo_int1 um apenas um mc sem nada dentro. E ele se encontra dentro de outro mc chamado mc_conteudo, todo os dois foram criados manualmente, não por AS3. Unico momento que me refiro a eles com algo de Child é na linha load_mc.addChild(loader);

mc_conteudo.mc_conteudo_int1.addChild(loader)

.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom,

 

Se você fizer:

trace(load_mc.numChildren);
Ele tem que retornar 1 ou mais que 1...

 

Se ele retornar zero

Então não vai ter como você fazer um removeChildAt(0);

 

Por isso que você tem que testar se ele é maior que 1...

E colocar dentro de um for normalmente.

 

Assim evita o caso de não existir conteúdo dentro do MC para apagar

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se ajuda, isso é de um exemplo bem simples.

 

removeChild(myLoader);
page1_mc.gotoAndPlay(1);
page2_mc.gotoAndPlay(1);
...etc

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.