DanielD2 0 Denunciar post Postado Janeiro 19, 2010 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
Michel Araújo 0 Denunciar post Postado Janeiro 19, 2010 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
DanielD2 0 Denunciar post Postado Janeiro 19, 2010 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
Michel Araújo 0 Denunciar post Postado Janeiro 19, 2010 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