Ir para conteúdo

POWERED BY:

Arquivado

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

DanielD2

createEmptyMovieClip em as3

Recommended Posts

Boa Noite galera!

 

É o seguinte eu crie um menu em as3 usando um metodo de uma classe até ai normal, só que eu estou tendo um problema que é o seguinte:

 

Esse metodo recebe um argumento que é uma array, dessa array eu pego a quantidade de dimensões e crio um botão pra cada, é ai que mora o perigo.

 

Se a array tem 5 posição ele cria 5 botões, se eu peço novamente para este metodo criar um novo menu no mesmo MC repositorio com menos botões (array menor) ele não limpa os botões cria outros novos com o AS2 é simple:

var mcVirtual:MovieClip = this.repositorio.createEmptyMovieClip("novoMc",0); //--> toda vez que eu mandar criar um novo menu ele limpa esse mc

//--> agora em AS3 isso não acontece

var mcVirtual:MovieClip = new MovieClip(); //--> ele não limpa pra criar outro menu
repositorio.addChild(mcVirtual);

Não uma coisa de outro mundo, mais eu não achar

 

Quem puder me ajudar eu agradeço

 

valew

 

PessoAll

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim... a primeira vez que você faz isso:

 

 var mcVirtual:MovieClip = new MovieClip();
 repositorio.addChild(mcVirtual);

Você criou uma variável chamada mcVirtual e apontou ela para um novo objeto MovieClip, que foi adicionado à lista de exibição do repositório.

 

Até aí ok. Mas se você executar novamente algo assim:

 

 mcVirtual = new MovieClip();
 repositorio.addChild(mcVirtual);

O que ocorre é que você criou um novo objeto MovieClip, e passou a apontar o mcVirtual para ele. Então você tem sim um objeto MC vazio agora. O problema é que o objeto anterior continua existindo, e continua na display list, embora nenhuma variável aponte pra ele. Então a solução é antes de criar o novo objeto, você retire o anterior da display list. Algo assim:

 

 var mcVirtual:MovieClip;
 
 //dentro da função que vai atualizar o seu menu
 function atualizaMenu(){
 	// Verifico se o mcVirtual já aponta p/ um objeto MC, e já é filho de repositorio
 	if(mcVirtual != null && repositorio.contains(mcVirtual)){
 repositorio.removeChild(mcVirtual);
 	}
 	mcVirtual = new MovieClip();
 	repositorio.addChild(mcVirtual);
 }

enfim, é um exemplo pq n sei como está estruturado seu código...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Michel

 

É exatamente isso só o código que você me passou o mcVirtual só retorna null... o que pode ser?

 

var mcVirtual:MovieClip;
 
 //dentro da função que vai atualizar o seu menu
 function atualizaMenu(){
        // Verifico se o mcVirtual já aponta p/ um objeto MC, e já é filho de repositorio
        if(mcVirtual != null && repositorio.contains(mcVirtual)){
 repositorio.removeChild(mcVirtual);
        }
        mcVirtual = new MovieClip();
        repositorio.addChild(mcVirtual);
 }

valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na primeira vez que você rodar a função, o mcVirtual vai ser null, pois ainda não aponta pra nenhum objeto.

 

Ele só vai ser diferente de null quando essa função for executada novamente. Pois nesse caso o mcVirtual já vai apontar pra um objeto no palco, que terá que ser retirado.

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.