PC74 0 Denunciar post Postado Março 3, 2010 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
Eder Fortunato 15 Denunciar post Postado Março 4, 2010 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
PC74 0 Denunciar post Postado Março 4, 2010 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
Eder Fortunato 15 Denunciar post Postado Março 4, 2010 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
PC74 0 Denunciar post Postado Março 5, 2010 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