Elektra 102 Denunciar post Postado Setembro 1, 2010 Os 2 codes são do Michel Araújo, menu ativado e switch, reuni e adaptei para o carregamento de páginas externas. Tentei adicionar o 'buttonMode = true;' no for, mas só altera o cursor abaixo do texto. Em outras partes do action também não funfou. O help da Adobe pt_BR, por enquanto, não ajudou muito, no google a maioria dos exemplos é pra AS2, em AS3, nada semelhante. Não sei como evitar que a página seja recarregada ao clicar no botão ativo, nem habilitar o mc como botão. Estou começando no AS3, agradeço quem puder auxiliar. Exemplo online >> Clique aqui stop(); var menu:Array =["Home", "Empresa", "Produtos","Contato"]; var i:uint; var ativo:Object=bt0; for(i=0;i<=3;i++){ this["bt"+i].txtBotao.text=menu[i]; if(i!=0){ this["bt"+i].addEventListener(MouseEvent.MOUSE_OVER, over); this["bt"+i].addEventListener(MouseEvent.MOUSE_OUT, out); this["bt"+i].addEventListener(MouseEvent.CLICK, clique); } } bt0.gotoAndStop(10); function over(evt:MouseEvent):void { evt.currentTarget.gotoAndPlay("over"); } function out(evt:MouseEvent):void { evt.currentTarget.gotoAndPlay("out"); } function clique(evt:MouseEvent):void { ativo.addEventListener(MouseEvent.MOUSE_OVER, over); ativo.addEventListener(MouseEvent.MOUSE_OUT, out); ativo.addEventListener(MouseEvent.CLICK, clique); ativo.gotoAndStop(1); ativo=evt.currentTarget; ativo.removeEventListener(MouseEvent.MOUSE_OVER, over); ativo.removeEventListener(MouseEvent.MOUSE_OUT, out); ativo.removeEventListener(MouseEvent.CLICK, clique); } var link:URLRequest = new URLRequest("home.swf"); mcCarrega.gotoAndPlay(2); bt0.addEventListener(MouseEvent.CLICK, carrega); bt1.addEventListener(MouseEvent.CLICK, carrega); bt2.addEventListener(MouseEvent.CLICK, carrega); bt3.addEventListener(MouseEvent.CLICK, carrega); function carrega(evt:MouseEvent):void { switch (evt.currentTarget) { case (bt0): link=new URLRequest ("home.swf"); break; case (bt1): link=new URLRequest ("empresa.swf"); break; case (bt2): link=new URLRequest ("produtos.swf"); break; case (bt3): link=new URLRequest ("contato.swf"); break; } mcCarrega.gotoAndPlay(2); } Abraços ps: os fractais belíssimos são do Pantoja, colega do fórum. Compartilhar este post Link para o post Compartilhar em outros sites
Foxn 3 Denunciar post Postado Setembro 1, 2010 O buttonMode apenas define o comportamento do ponteiro mas não sobre suas ações. O comando correto seria o mouseEnabled, mas eu imagino que você percebeu que parece não funciona. Acontece que esse comando desabilita a execução dos eventos de mouse, pelo mouse no objeto que você especificou mas não no elementos dentro do seu botão. Isso quer dizer que o botão para de executar o evento, mas a caixa de texto dentro dele, não. Assim, imagino que usando o mouseChildren, que desabilita o mouse para os elementos dentro do seu botão resolveria o seu problema: for(i=0;i<=3;i++){ this["bt"+i].txtBotao.text=menu[i]; this["bt"+i].mouseChildren = false; this["bt"+i].addEventListener(MouseEvent.MOUSE_OVER, over); this["bt"+i].addEventListener(MouseEvent.MOUSE_OUT, out); this["bt"+i].addEventListener(MouseEvent.CLICK, clique); this["bt"+i].addEventListener(MouseEvent.CLICK, carrega); } bt0.gotoAndStop("over"); bt0.mouseEnabled = false; function clique(evt:MouseEvent):void { ativo.mouseEnabled = true ativo.gotoAndStop("out"); ativo = evt.currentTarget; ativo.mouseEnabled = false;} Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Setembro 1, 2010 Muito obrigada pela atenção Foxn, sempre aprendo com você. Testei aqui, mas ainda não consegui fazer funcionar. Fui conferir no help o 'mouseChildren', não conhecia isso. O que me interessa mesmo aprender é manter o estado ativo e impedir que a página seja re-carregada. Timeline mata :lol: (eu também invento as minhas). Ainda levo um bom tempo pra me libertar. Vou ver se consigo substituir os 'botões fru-fru' por um mc com estados via action. Dou um retorno o mais breve possível. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Setembro 6, 2010 Por favor, desculpe a demora. Não descobri como resolver isso, por falta de conhecimento mesmo, mas sei que vou aprender. Agradeço honestamente se puder me sugerir uma forma simples de não re-carregar a página, nem precisa que o botão fique selecionado. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Foxn 3 Denunciar post Postado Setembro 6, 2010 Imagino que isso resolva o problema: stop(); var menu:Array = ["Home","Empresa","Produtos","Contato"]; var i:uint; var ativo:MovieClip = new MovieClip(); var link:URLRequest; for (i=0; i<=3; i++) { this["bt" + i].txtBotao.text = menu[i]; this["bt" + i].mouseChildren = false; this["bt" + i].addEventListener(MouseEvent.MOUSE_OVER, over); this["bt" + i].addEventListener(MouseEvent.MOUSE_OUT, out); this["bt" + i].addEventListener(MouseEvent.CLICK, carrega); this["bt" + i].addEventListener(MouseEvent.CLICK, clique); } function over(evt:MouseEvent):void { if (ativo != evt.currentTarget) { evt.currentTarget.gotoAndPlay("over"); } } function out(evt:MouseEvent):void { if (ativo != evt.currentTarget) { evt.currentTarget.gotoAndPlay("out"); } } function clique(evt:MouseEvent):void { if (ativo != evt.currentTarget) { trace("clique"); ativo.gotoAndPlay("out"); ativo = evt.currentTarget as MovieClip; ativo.gotoAndPlay("over"); } } function carrega(evt:MouseEvent):void { if (ativo != evt.currentTarget) { trace("carrega"); switch (evt.currentTarget) { case (bt0) : link = new URLRequest("home.swf"); break; case (bt1) : link = new URLRequest("empresa.swf"); break; case (bt2) : link = new URLRequest("produtos.swf"); break; case (bt3) : link = new URLRequest("contato.swf"); break; } } mcCarrega.gotoAndPlay(2); } bt0.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); Eu testei aqui e parece estar ok. Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Setembro 7, 2010 Eu aqui dando uma trabalheira danada, hein Foxn! :D (fazer o que né, quero mesmo é compreender). Agradeço demais pela atenção. Testei, com os arquivos do Michel, mas ainda não deu certo. Não conhecia o 'currentTarget as MovieClip' e 'dispatchEvent', vou me informar. Penso que o problema se encontre na forma como o botão foi criado, que não corresponde ao uso do mouseChildren. botão ativado Outra coisa que pode estar dificultando é uma transição de páginas com um movie clip sobreposto e preloader no frame intermediário (foi a única transição que encontrei, até o momento). transição + preloader stop(); // Declaração de Variável var carrega:Loader = new Loader(); // Carregando o arquivo escolhido na variável CARREGA carrega.load(MovieClip(root).link); // Verificação de Eventos de Carregamento carrega.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, carregando); carrega.contentLoaderInfo.addEventListener(Event.COMPLETE, completo); // Funções de Carregamento function carregando(evt:ProgressEvent):void { var perc:Number = evt.bytesLoaded/evt.bytesTotal; barra.scaleX = perc; percentual.text = Math.floor(perc*100) + "%"; } function completo(evt:Event):void { MovieClip(root).container.removeChildAt(0); MovieClip(root).container.addChild(carrega); play(); } Aqui um exemplo, a transição não é grande coisa, mas nem isso eu sei >> http://www.alfamidia.com.br/publico/dfl/index.swf Vou arrastar mais umas correntes e ver o que consigo fazer. ;) (com muito amor) Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Foxn 3 Denunciar post Postado Setembro 7, 2010 No script que publiquei o carregar estava fora da condição: function carrega(evt:MouseEvent):void { if (ativo != evt.currentTarget) { trace("carrega"); switch (evt.currentTarget) { case (bt0) : link = new URLRequest("home.swf"); break; case (bt1) : link = new URLRequest("empresa.swf"); break; case (bt2) : link = new URLRequest("produtos.swf"); break; case (bt3) : link = new URLRequest("contato.swf"); break; } mcCarrega.gotoAndPlay(2); } } E apenas para garantir, segue um exemplo: http://www.renatopac....br/elektra.fla Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Setembro 7, 2010 Querido amigo, as lágrimas estão caindo aqui, fiquei feliz demais. :D Fiz um curso de AS3, 40 hs, se aprende o básico do básico. Tenho muito o que ralar ainda. Adquiri livros, DVD com vídeo aulas, comecei a estudar inglês e em breve vou fazer um curso de lógica. Só você mesmo para adicionar um trace e auxiliar meu entendimento, é tudo o que quero, melhor impossível. Eu já tinha revirado exemplos em AS2, em AS3 com arquivos internos, e o único em AS3 com carregamento externo tinha um code muito além do meu conhecimento, eu não sabia nem por onde começar. Agora é tentar melhorar a 'transição' de páginas (essa foi a única que encontrei, até o momento), ajustar o code e substituir o preloader interno por uma classe. Aos poucos vai melhorando. Se você não existisse, precisavam lhe inventar. É dos raros que auxiliam com humanidade. Fico lhe devendo mais essa Foxn. http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif Muito, muito obrigada mesmo. Aqui o arquivo corrigido publicado >> Clique aqui http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Setembro 8, 2010 :lol: que beleza, tem moderador (formado) estacionado no meu tópico pra aprender. (vai correndo corrigir o site) hahahhhh, essa foi a melhor de todas. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif tá rendendo!!! Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Outubro 4, 2010 Por favor, tópico [RESOLVIDO]. Compartilhar este post Link para o post Compartilhar em outros sites
JH0NNY 0 Denunciar post Postado Abril 18, 2011 Só uma dúvida, como os swf externos são chamados. Quero dizer, sei que é no MC container mas que função uso pra chama-los ? Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Abril 18, 2011 Só uma dúvida, como os swf externos são chamados. Quero dizer, sei que é no MC container mas que função uso pra chama-los ? Melhor você assistir a vídeo aula do Michel para compreender como a estrutura foi criada: http://www.mxmasters.com.br/flash/flash-menu-com-actionscript-30/ Abraços Compartilhar este post Link para o post Compartilhar em outros sites
JH0NNY 0 Denunciar post Postado Abril 19, 2011 Obrigado pela resposta Elektra Assisti a video aula, muito bem explicada. Consegui recriar o proposto mas ao invés dos keyframes utilizei um txt dinâmico. Minha duvida é como carregar os swf externos. Já li vários post pela net sobre o carregamento em AS3, mas ainda não peguei a manha. Em AS2 era apenas uma linha no botão e já puxava o filme no mc vazio. por exemplo no tutorial switch(ativo){ case (news0): item.text = "01"; vazio.load(new URLRequest("home.swf")); break Aparece o seguinte erro TypeError: Error #1006: load não é uma função. Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Abril 19, 2011 JH0NNY Fica legal você criar um novo tópico próprio com a sua necessidade. Este era sobre desabilitar o click em um botão. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
JH0NNY 0 Denunciar post Postado Abril 19, 2011 Beleza Obrigado Elektra pela atenção Compartilhar este post Link para o post Compartilhar em outros sites