Naty 3 Denunciar post Postado Fevereiro 10, 2010 Olá gente td bom ?? Estou com um probleminha que ainda nao consegui resolver... quem sabe vcs me dao uma luz... Bom é o seguinte tenho um = new Loader sendo criado dimamicamente dentro de um For sendo puxado de um xml... Porém em certa parte necessito que seja feito o unload() deste loader, pq qdo o usuario clica no bt fica acrescentando... a questao é... ?? como fazer um unload() se a criaçao do Loader esta sendo feita no For ?? A variavel é global porem a criacao dela só é feita quando esta funcao que contem o for é chamada.... vou posta o codigo desa funcao apenas p/ ilustrar... function exibiBabylook () { camisetaBXML = new XML (camisetaBXMLLoader.data) tamanhoBabylook = camisetaBXML.*.length() // for (var i:uint=0; i<tamanhoBabylook; i++) { var novaCamisetaB:MovieClip = new MovieClip babylook_mc.addChild(novaCamisetaB) camisetas_mc.addChild(babylook_mc) // with (novaCamisetaB) { babylookLoader = new Loader // AKI ESTA MEU PROBLEMA.. PRECISO DAR UM UNLOAD() NESTA VARIAVEL FORA DESTA FUNCAO babylookRequest.url = "arquivos_maisProdutos/babylook/" + "/feminino" + (i +1)+ ".png" babylookLoader.load(babylookRequest) // addChild(babylookLoader) babylookLoader.x = 260 * i babylookLoader.y = 0 // buttonMode = true addEventListener(MouseEvent.CLICK, clicouCustomisa) } //Criação dinamica de variavel dentro de MC novaCamisetaB.customisa = "galeria_swf/babylook/" + camisetaBXML.*[i].@url } } Compartilhar este post Link para o post Compartilhar em outros sites
Michel Araújo 0 Denunciar post Postado Fevereiro 10, 2010 Olá Naty, você quer remover uma imagem especifica do palco? se for isso, dá um nome pra cada objeto Loader dentro do laço (você pode usar inclusive a variável i, para que cada nome seja diferente) assim: babylookLoader.name = 'babylook'+i; aí quando você precisar retirá-lo do palco, você retira o que quiser usando o nome: novaCamisetaB.removeChild(novaCamisetaB.getChildByName('babylook2'));fiz o exemplo com um nome fixo, mas é só pra mostrar. No seu caso você deve pegar esse nome de forma dinâmica, mas aí vai depender de em que situação isso vai ser feito. usar simplesmente o unload não daria pois a variável babylookLoader aponta para um objeto diferente a cada loop. No caso só tiraria o objeto do ultimo loop. agora, se você quer remover todas as imagens inseridas por esse for, é só criar mais um for com o numero de filhos do novaCamisetaB, e colocar um removeChildAt(0) nele =) Compartilhar este post Link para o post Compartilhar em outros sites
DanielGianni 0 Denunciar post Postado Fevereiro 10, 2010 Eu prefiro usar array para guardar a instância dos objetos porque não me dou muito bem com o getChildByName rs na minha opiniao cria um array global assim var instancias:Array = new Array(); lá no seu FOR no final dele coloca: instancias.push( novaCamisetaB ); depois para remover é só percorrer o vetor: for each( item:MovieClip in instancias ) { this.removeChild( item ); // assim apaga todas as instâncias } Só um observação, o UNLOAD na verdade seta NULL para o objeto mas não o remove da memória, por isso removeChild é mais indicado pois este sim destroy o objeto deixando a memória marcada para limpeza pelo garbage collector. Compartilhar este post Link para o post Compartilhar em outros sites
Naty 3 Denunciar post Postado Fevereiro 12, 2010 Eu prefiro usar array para guardar a instância dos objetos porque não me dou muito bem com o getChildByName rs na minha opiniao cria um array global assim var instancias:Array = new Array(); lá no seu FOR no final dele coloca: instancias.push( novaCamisetaB ); depois para remover é só percorrer o vetor: for each( item:MovieClip in instancias ) { this.removeChild( item ); // assim apaga todas as instâncias } Só um observação, o UNLOAD na verdade seta NULL para o objeto mas não o remove da memória, por isso removeChild é mais indicado pois este sim destroy o objeto deixando a memória marcada para limpeza pelo garbage collector. Daniel tentei fazer do seu jeito, pois achei mais simples... realmente usar getChildByName é meio complexo... porém esta me dando este erro... 1084: Syntax error: expecting in before colon. function remover () { fundoFutebolLoader.visible = false paginaLoader.unload() // if(composicaoCamisas_mc) if(composicaoCamisas_mc.parent ) composicaoCamisas_mc.parent.removeChild(composicaoCamisas_mc); if(composicaoFeminina_mc) if(composicaoFeminina_mc.parent ) composicaoFeminina_mc.parent.removeChild(composicaoFeminina_mc); if(composicaoMeias_mc) if(composicaoMeias_mc.parent ) composicaoMeias_mc.parent.removeChild(composicaoMeias_mc); // if(camisetaR_mc) if(camisetaR_mc.parent ) camisetaR_mc.parent.removeChild(camisetaR_mc); if(camisetaT_mc) if(camisetaT_mc.parent ) camisetaT_mc.parent.removeChild(camisetaT_mc); if(babylook_mc) if(babylook_mc.parent ) babylook_mc.parent.removeChild(babylook_mc); if(calcoes_mc) if(calcoes_mc.parent ) calcoes_mc.parent.removeChild(calcoes_mc); if(goleiro_mc) if(goleiro_mc.parent ) goleiro_mc.parent.removeChild(goleiro_mc); if(colete_mc) if(colete_mc.parent ) colete_mc.parent.removeChild(colete_mc); if(meiao_mc) if(meiao_mc.parent ) meiao_mc.parent.removeChild(meiao_mc); // if(bt_next) if(bt_next.parent ) bt_next.parent.removeChild(bt_next); if(bt_prev) if(bt_prev.parent ) bt_prev.parent.removeChild(bt_prev); // for each (novaCamisetaR:MovieClip in instancias ){ this.removeChild(novaCamisetaR) } } var instancias:Array = new Array(); // function exibiCamisetasR () { camisetaRXML = new XML (camisetaRXMLLoader.data) tamanhoCamisetaR = camisetaRXML.*.length() // for (var i:uint=0; i<tamanhoCamisetaR; i++){ var novaCamisetaR:MovieClip = new MovieClip camisetaR_mc.addChild(novaCamisetaR) camisetas_mc.addChild(camisetaR_mc) with (novaCamisetaR){ camisetaRLoader = new Loader camisetaRRequest.url = "arquivos_galerias/arquivos_futebol/camisetas/" + "/camisa" + (i +1)+ ".png" camisetaRLoader.load(camisetaRRequest) // addChild(camisetaRLoader) camisetaRLoader.x = 320 * i camisetaRLoader.y = 0 // buttonMode = true addEventListener(MouseEvent.CLICK, clicouCustomisa) // } //Criação dinamica de variavel dentro de MC novaCamisetaR.customisa = "galeria_swf/recorte/" + camisetaRXML.*[i].@url instancias.push(novaCamisetaR) } composicaoCamisasLoader = new Loader composicaoCamisasLoader.load(composicaoCamisasRequest) composicaoCamisasLoader.x = 10 composicaoCamisasLoader.y = 50 // composicaoCamisas_mc.addChild(composicaoCamisasLoader) composicao_mc.addChild(composicaoCamisas_mc) // resetSeta () } o que será q fiz errado... pois não entendi mto bem o que este erro esta acusandoo Compartilhar este post Link para o post Compartilhar em outros sites
Michel Araújo 0 Denunciar post Postado Fevereiro 20, 2010 Olá Naty... deu uma olhada rápida de acordo com o erro retornado, e achei isso: for each (novaCamisetaR:MovieClip in instancias ){ this.removeChild(novaCamisetaR); } mesmo você tendo declarado o novaCamisetaR anteriormente, o for each vai usar uma variável local, que precisa ser declarada. Muda assim: for each (var novaCamisetaR:MovieClip in instancias ){ this.removeChild(novaCamisetaR); } e vê se funciona o restante =) []'s Compartilhar este post Link para o post Compartilhar em outros sites
Naty 3 Denunciar post Postado Fevereiro 22, 2010 o que consegui foi perto disto var instancias:Array = new Array(); // function exibiFitness () { fitnessXML = new XML (fitnessXMLLoader.data) tamanhoFitness = fitnessXML.*.length() // for (var i:uint=0; i<tamanhoFitness; i++) { var novoFitness:MovieClip = new MovieClip fitness.addChild(novoFitness) fitness_mc.addChild(fitness) // with (novoFitness) { fitnessLoader = new Loader fitnessRequest.url = "arquivos_galerias/arquivos_fitness/fitness/" + "/fitness" + (i +1)+ ".png" instancias.push(fitnessLoader) fitnessLoader.load(fitnessRequest) // addChild(fitnessLoader) fitnessLoader.x = 240 * i fitnessLoader.y = 0 // buttonMode = true addEventListener(MouseEvent.CLICK, clicouCustomisa) } //Criação dinamica de variavel dentro de MC novoFitness.customisa = "galeria_swf/fitness/" + fitnessXML.*[i].@url instancias.push(novoFitness) } } function remover () { fundoFitnessLoader.visible = false paginaLoader.unload() fitness_mc.visible = false // if(composicaoFitness_mc) if(composicaoFitness_mc.parent ) composicaoFitness_mc.parent.removeChild(composicaoFitness_mc); // if(bt_next) if(bt_next.parent ) bt_next.parent.removeChild(bt_next); if(bt_prev) if(bt_prev.parent ) bt_prev.parent.removeChild(bt_prev); // instancias[0].unload() } porem queria remover todos os nós ?? como fazer ? Compartilhar este post Link para o post Compartilhar em outros sites
Michel Araújo 0 Denunciar post Postado Fevereiro 22, 2010 quando você diz remover todos os nós, é pra remover todos os MovieClips novoFitness que estão no Array instancias do palco e do próprio array? se for, pode ser assim: while(instancias.length > 0){ fitness.removeChild(instancias[0]); instancias.splice(0,1); } Compartilhar este post Link para o post Compartilhar em outros sites