Ir para conteúdo

POWERED BY:

Arquivado

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

PC74

[Resolvido] Problema com removeChild

Recommended Posts

Boa Tarde,

 

Estou estudando a pouco a Action Script 3.0 e depois de fazer alguns trabalhos estou tendo enorme dificuldade em remover um movie clip criado dentro de um conteiner.

 

Basicamente tenho 4 funções que abrem galerias através do método addChild, dentro de uma sprite. Tentei também o unload sem nenhum resultado.

 

O problema acontece quando tento substituir as galerias. Por algum erro no código o Flash não elimina a galeria anterior e carrega a nova galeria em cima da antiga.

 

O código das funções que estou utilizando é esse:

 

Função 1:

 

function abre_comercio(e:MouseEvent):void{
	txt_titulo.text = "Comércio"
	var arquivo:String="cont_comercio.swf";
	var comercio:URLRequest = new URLRequest(arquivo);
	var carregador:Loader = new Loader();
	var posicionador:Sprite = new Sprite();
	with(posicionador){
	x = 3;
	y = 94.0;
	}
	addChild(posicionador);
	carregador.load(comercio);
	posicionador.addChild(carregador);
}

 

Função 2:

 

function abre_consultorio(e:MouseEvent):void{
	txt_titulo.text = "Consultórios"
	var arquivo:String="cont_consultorio.swf";
	var consultorio:URLRequest = new URLRequest(arquivo);
	var carregador:Loader = new Loader();
	var posicionador:Sprite = new Sprite();
	with(posicionador){
	x = 3;
	y = 94.0;
	}
	addChild(posicionador);
	carregador.load(consultorio);
	posicionador.addChild(carregador);
}

Inseri a opção removeChild em alguns pontos do código mas ainda assim não é possível remover a galeria anterior e carregar a nova. Nem mesmo utilizando o unload

 

Talvez alguém simplemente olhando o código já consiga perceber o erro.

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você esta usando o Sprite "posicionador", mas como ele é declarado dentro de uma função,

não da para acessar ele de outra só pelo nome dele, pois o escopo dele é local, só dentro da função

 

você pode resolver de varias formas, como:

 

var posicionador:Sprite = new Sprite();
with(posicionador){
        x = 3;
        y = 94.0;
}
addChild(posicionador);

function abre_comercio(e:MouseEvent):void{
        txt_titulo.text = "Comércio"
        var arquivo:String="cont_comercio.swf";
        var comercio:URLRequest = new URLRequest(arquivo);
        var carregador:Loader = new Loader();   
        carregador.load(comercio);
        if(posicionador.numChildren != 0){// verifica se tem algum mc dentro dele
               posicionador.getChildAt(0);// remove o mc anterior
        }
        posicionador.addChild(carregador);
}


function abre_consultorio(e:MouseEvent):void{
        txt_titulo.text = "Consultórios"
        var arquivo:String="cont_consultorio.swf";
        var consultorio:URLRequest = new URLRequest(arquivo);
        var carregador:Loader = new Loader();
        carregador.load(consultorio);
        if(posicionador.numChildren != 0){// verifica se tem algum mc dentro dele
               posicionador.getChildAt(0);// remove o mc anterior
        }
        posicionador.addChild(carregador);
}


eu declarei o posicionador fora, então ele pode ser acessado de qualquer função

 

 

acho que isso resolve

 

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde Eder. O obrigado pela atenção.

 

Entendi o problema que está acontecendo no código. E faz todo o sentido.

 

Fiz as alterações que sugeriu, mas o problema ainda persiste. Declarei a sprite fora das funções, as ainda assim no addChild a Sprite continua recebendo vários "Childs" um por cima do outro.

 

Estou colocando novamente o código e deixei inclusive os seus comentários. Se puder avaliar agradeço.

 

Grande abraço.

 

//++++++++++++++++++++++++++ Início

 

import fl.transitions.*;

import fl.transitions.easing.*;

 

 

//++++++++++++++++++++++++++ Transição dos botões

 

TransitionManager.start(bt_home, {type:Fly, direction:Transition.IN, duration:0.5, easing:Strong.easeOut, startPoint:2});

TransitionManager.start(bt_proarts, {type:Fly, direction:Transition.IN, duration:0.6, easing:Strong.easeOut, startPoint:2});

TransitionManager.start(bt_trabalhos, {type:Fly, direction:Transition.IN, duration:0.7, easing:Strong.easeOut, startPoint:2});

TransitionManager.start(bt_corian, {type:Fly, direction:Transition.IN, duration:0.8, easing:Strong.easeOut, startPoint:2});

TransitionManager.start(bt_servicos, {type:Fly, direction:Transition.IN, duration:1.1, easing:Strong.easeOut, startPoint:2});

TransitionManager.start(bt_parceiros, {type:Fly, direction:Transition.IN, duration:1.2, easing:Strong.easeOut, startPoint:2});

TransitionManager.start(bt_contato, {type:Fly, direction:Transition.IN, duration:1.3, easing:Strong.easeOut, startPoint:2});

 

TransitionManager.start(mc_conteudo, {type:Fade, direction:Transition.IN, duration:0.3, easing:Strong.easeOut});

TransitionManager.start(mc_submenu, {type:Fade, direction:Transition.IN, duration:4, easing:Strong.easeOut});

 

 

//++++++++++++++++++++++++++ Posicionador

 

var posicionador:Sprite = new Sprite();

with(posicionador){

x = 3;

y = 94.0;

}

addChild(posicionador);

 

txt_titulo.text = "Banheiro"

var arquivo:String="cont_banheiro.swf";

var banheiro:URLRequest = new URLRequest(arquivo);

var carregador:Loader = new Loader

carregador.load(banheiro);

posicionador.addChild(carregador);

 

 

//++++++++++++++++++++++++++ Modo Botão

 

bt_home.buttonMode = true;

bt_proarts.buttonMode = true;

//bt_trabalhos.buttonMode = true;

bt_corian.buttonMode = true;

bt_servicos.buttonMode = true;

bt_parceiros.buttonMode = true;

bt_contato.buttonMode = true;

 

 

//++++++++++++++++++++++++++ Botões Menu

 

bt_home.addEventListener(MouseEvent.MOUSE_OVER, iniciar_home);

bt_home.addEventListener(MouseEvent.MOUSE_OUT, voltar_home);

bt_home.addEventListener(MouseEvent.CLICK, abre_home)

 

bt_proarts.addEventListener(MouseEvent.MOUSE_OVER, iniciar_proarts);

bt_proarts.addEventListener(MouseEvent.MOUSE_OUT, voltar_proarts);

bt_proarts.addEventListener(MouseEvent.CLICK, abre_proarts);

 

//bt_trabalhos.addEventListener(MouseEvent.MOUSE_OVER, iniciar_trabalhos);

//bt_trabalhos.addEventListener(MouseEvent.MOUSE_OUT, voltar_trabalhos);

//bt_trabalhos.addEventListener(MouseEvent.CLICK, abre_trabalhos);

 

bt_corian.addEventListener(MouseEvent.MOUSE_OVER, iniciar_corian);

bt_corian.addEventListener(MouseEvent.MOUSE_OUT, voltar_corian);

bt_corian.addEventListener(MouseEvent.CLICK, abre_corian);

 

bt_servicos.addEventListener(MouseEvent.MOUSE_OVER, iniciar_servicos);

bt_servicos.addEventListener(MouseEvent.MOUSE_OUT, voltar_servicos);

bt_servicos.addEventListener(MouseEvent.CLICK, abre_servicos);

 

bt_parceiros.addEventListener(MouseEvent.MOUSE_OVER, iniciar_parceiros);

bt_parceiros.addEventListener(MouseEvent.MOUSE_OUT, voltar_parceiros);

bt_parceiros.addEventListener(MouseEvent.CLICK, abre_parceiros);

 

bt_contato.addEventListener(MouseEvent.MOUSE_OVER, iniciar_contato);

bt_contato.addEventListener(MouseEvent.MOUSE_OUT, voltar_contato);

bt_contato.addEventListener(MouseEvent.CLICK, abre_contato);

 

 

//++++++++++++++++++++++++++ Botões Submenus

 

mc_submenu.bt_banheiro.addEventListener(MouseEvent.CLICK, abre_banheiros);

mc_submenu.bt_comercio.addEventListener(MouseEvent.CLICK, abre_comercio);

 

 

//++++++++++++++++++++++++++ Funções

 

function abre_banheiros(e:MouseEvent):void{

txt_titulo.text = "Banheiro"

var arquivo:String="cont_banheiro.swf";

var banheiro:URLRequest = new URLRequest(arquivo);

var carregador:Loader = new Loader

carregador.load(banheiro);

if (posicionador.numChildren != 0){ // verifica se tem algum mc dentro dele

posicionador.getChildAt(0); // remove o mc anterior

}

posicionador.addChild(carregador);

}

 

function abre_comercio(e:MouseEvent):void{

txt_titulo.text = "Comércio"

var arquivo:String="cont_comercio.swf";

var comercio:URLRequest = new URLRequest(arquivo);

var carregador:Loader = new Loader();

carregador.load(comercio);

if (posicionador.numChildren != 0){ // verifica se tem algum mc dentro dele

posicionador.getChildAt(0); // remove o mc anterior

}

posicionador.addChild(carregador);

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imagina cara. Quem dera todos se dispisessem a ajudar os outros.

 

Valeu pela força. Acertei o meu código e agora está funcionando normalmente

 

E o que é melhor: entendi a lógica do negócio. Com isso vou errar menos agora.

 

Grande Abraço

 

 

cara foi mau, eu respondi ontem a noite e estava com sono, http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

 

 

distração minha eu coloquei o comando para remover sendo "getChildAt"

 

mas seria o "removeChildAt", só trocar que funciona

 

 

 

[]´s

 

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.