..:: MX Studio Fóruns ::..: o swf que está no palco não some quando carrego outro. - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

o swf que está no palco não some quando carrego outro.

#1 User is offline   Linoani 

  • Group: Membros
  • Posts: 67
  • Joined: 02-November 09

Posted 16 March 2010 - 12:42 PM

Tenho 5 menus que ao clicar em um carrega um swf diferente. Inicialmente o site carrega o swf do 1º menu. Na função que recebe o swf carregado crio uma variavel 'sessao_mc' que recebe o target (o swf carregado). O problema é que quando clico em menu diferente o swf anterior (que tinha sido carregado e estava na tela) não some. E isso fica pra todos os swf carregados, pois nenhum desaparece.

Pra tentar resolver isso, tentei pegar um objeto que já estava carregado no palco e dar removeChild() nele. Mas ai dá o erro 1009 na função onResize do objeto/swf que tentei deletar - é que cada swf tem uma função onResize; se quero deletar o swf Portifolio do palco, ele vai dar erro na função onResize de Portfifolio.

Pra entenderem melhor veja o código abaixo (no exemplo usei o 'object Portifolio', mas tentei com todos os outros):

CÓDIGO
                      
                for(var i:int = 0; i<numChildren; i++)
                {
                    if(getChildAt(i).toString() == "[object Portifolio]")
                    {
                        trace("achou")
                        removeChild(getChildAt(i));   // erro 1009 na função Portifolio/onResize()
                        //break;
                    }
                }



O que eu preciso é remover corretamente o swf anterior. Alguém pode me ajudar?

Abraços,
0

#2 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 21 March 2010 - 09:48 PM

Mostra as ações que está usando para carregar o swf, pois você não precisa remover o objeto do palco, basta usar um unload e carregar os outros swf no mesmo local e com o mesmo objeto.

[]s
0

#3 User is offline   Linoani 

  • Group: Membros
  • Posts: 67
  • Joined: 02-November 09

Posted 24 March 2010 - 10:57 AM

Eu usei unload() mas ainda sim ele fica na tela. Na função que recebe o Loader eu coloque o target numa variavel MovieClip e remove o listener de carregamente e faço unload(). Aqui o código:

CÓDIGO
loadSessao = new Loader();
loadSessao.load(new URLRequest("../swf/portifolio.swf"));
loadSessao.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressSessao);
loadSessao.contentLoaderInfo.addEventListener(Event.COMPLETE, carregouSessao);

                
                // Eu não adiciono o sessao_mc nessa função, a nao ser dentro da condição if como podem ver.
                private function carregouSessao(evt:Event):void
        {
            sessao_mc = new MovieClip()
            sessao_mc = MovieClip(evt.target.content);
            
            loadSessao.removeEventListener(Event.COMPLETE, carregouSessao);                
            loadSessao.unload()
            loadSessao = null;
            
            if(startSite)   // 'startSite' inicialmente é true, pois na 1ª vez o site já começa carregando um menu, depois tem que clicar em outro pra carregar, daí chamará uma função.
            {
                addChild(sessao_mc)
                                totem.raioPerfil.addEventListener(MouseEvent.CLICK, onClickRaio, false, 0, true);
                totem.raioConceito.addEventListener(MouseEvent.CLICK, onClickRaio, false, 0, true);
                        }
                        else
                        {
                               mostraSessao(sessao_mc)
                        }

                }



                private function onClickRaio(evt:MouseEvent):void
        {    

                        startSite = false;

                        // aqui se o menu com esse name é o alvo carrega o swf dele
                         if(evt.currentTarget.name == "raioPerfil")
            {
                loadSessao = new Loader();
                loadSessao.load(new URLRequest("../swf/perfil.swf"));
                loadSessao.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressSessao);
                loadSessao.contentLoaderInfo.addEventListener(Event.COMPLETE, carregouSessao);
                addChild(preloader)
            }
            
            if(evt.currentTarget.name == "raioConceito")
            {
                loadSessao = new Loader();
                loadSessao.load(new URLRequest("../swf/conceito.swf"));
                loadSessao.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressSessao);
                loadSessao.contentLoaderInfo.addEventListener(Event.COMPLETE, carregouSessao);
                addChild(preloader)
            }


                //adiciona swf carregado no palco
                private function mostraSessao(sessao_mc):void
        {                          
                     addChild(sessao_mc);
                 }



Ainda não vi onde tá o problema. Se alguém puder me ajudar... smartass.gifwink.gif

Abraços
0

#4 User is offline   Natan 

  • Group: Moderador Global
  • Posts: 7350
  • Joined: 28-February 04

Posted 28 March 2010 - 06:02 PM

Está meio confuso, mas pelo que eu vi, você não pode declarar mais de uma vez uma instancia da Classe Loader, pois a antiga acaba se perdendo. Então, acredito que se remover loadSessao = new Loader(); das ações e deixar apenas no começo o unload deve passar a funcionar corretamente.

Se não funcionar posta seus arquivos pois fica mais fácil de ajudar olhando o seu arquivo.

[]s
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)