Elektra 102 Denunciar post Postado Maio 29, 2012 O code original não possui os botoes_mcs aninhados em um Movie Clip, ativa o item inicial com: bt0.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); Adaptei para outro arquivo com layout líquido e preciso do Movie Clip container para o resize. Fica selecionado ao clicar, anima os demais itens. Bem simples, mas funcionando na boa. Tô precisando um help para o botão 'Home'. menu.buttonMode = true; menu.addEventListener(MouseEvent.CLICK, onMenuClick); menu.addEventListener(MouseEvent.MOUSE_OVER, onMenuOver); menu.addEventListener(MouseEvent.MOUSE_OUT, onMenuOut); var ativo:MovieClip = new MovieClip(); function onMenuClick(e:MouseEvent):void { navegaSite("swf/" + e.target.name + ".swf"); trace(e.target.name); if(ativo != e.target) { trace("clique"); ativo.gotoAndPlay(11); ativo = e.target as MovieClip; } } function onMenuOver(e:MouseEvent):void { if(ativo != e.target) { e.target.gotoAndPlay(2); } } function onMenuOut(e:MouseEvent):void { if(ativo != e.target) { e.target.gotoAndPlay(11); } } Abraços :grin: Compartilhar este post Link para o post Compartilhar em outros sites
IAMDIX 10 Denunciar post Postado Maio 29, 2012 MovieClip(root).gotoAndPlay(1, "home"); stop(); Algo assim? Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Maio 29, 2012 Se entendi direito, o bt0 está dentro do menu e você quer dar um dispatch no botão que corresponde a home e não consegue acessar porque você aplicou o click evento direto no menu, é isso? Você pode fazer a função receber dois parametros, uma que é o evento que recebe o null por padrão e outra que é o movieclip direto, assim você pode acessar a função tanto pelo evento do mouse quanto pela instancia do movieclip, de qualquer forma acho mais fácil usar um array ou vector e fazer a verificação por ele, mesmo porque você terá que desativar o botão que está ativo, veja se é isso: (Não testei) menu.buttonMode = true; menu.addEventListener(MouseEvent.CLICK, onMenuClick); menu.addEventListener(MouseEvent.MOUSE_OVER, onMenuOver); menu.addEventListener(MouseEvent.MOUSE_OUT, onMenuOut); var ativo:MovieClip = new MovieClip(); onMenuClick(null, menu.bt0) function onMenuClick(e:MouseEvent = null, mc:DisplayObject = null):void { var mc_: MovieClip = (e == null? mc: e.target) as MovieClip var nome:String = mc_.name; navegaSite("swf/" + nome + ".swf"); if(ativo != mc_) { trace("clique"); ativo.gotoAndPlay(11); ativo = mc_; } } function onMenuOver(e:MouseEvent):void { if(ativo != e.target) { e.target.gotoAndPlay(2); } } function onMenuOut(e:MouseEvent):void { if(ativo != e.target) { e.target.gotoAndPlay(11); } } Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Maio 29, 2012 Obrigada pela atenção carneirinho. Testei sua sugestão, o botão 'home' ficou desativado (frame 1). Tenho um exemplo simples, com os botões direto no stage, que ativa o item inicial (bt0). Code original do Michel Araújo, adaptações pelo Foxn (quem adicionou o dispatchEvent). Usei o mesmo action para o menu no arquivo atual (aninhado em um Movie Clip), removi apenas 1 linha (repetia a animação ao clicar). Ficou perfeito, só não tô sabendo como carregar com o 'home' ativo (frame 10). Publicado (com o code que postei) >> Clique aqui Esse arquivo faz parte de um curso, tenho ele completo com XML, menu ativo (Array, Export e tal) mas como não domino o action optei por usar algo ao meu alcance. Adicionei alguns recursos próprios e tenho outros melhoramentos a caminho. Agradeço se puder dar uma olhada. ps: se me permitir, lhe envio o arquivo. Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Maio 29, 2012 Se puder disponibilizar fica mais fácil até de entender o que não está acontecendo, provavelmente pode ser até tempo de execussão. Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Maio 29, 2012 Se puder disponibilizar fica mais fácil até de entender o que não está acontecendo, provavelmente pode ser até tempo de execussão. Muito obrigada, enviado por MP. :grin: Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Maio 30, 2012 Dei uma olhada no seu código e o que fiz realmente está certo. Com a bola de cristal deu pra imaginar como estava montado seu fla, com o menu como pai de todos. O único motivo de não funcionar seu home é ele muda de cor no onMenuOver e pelo dispatch você não passa por ele, então uma das opções é você adicionar o gotoAndPlay(2) dentro do onMenuClick (caso ainda não esteja no frame desejado) ou fazer um dispatch pro over tb, opção 1: var ativo:MovieClip = new MovieClip(); onMenuClick(null, menu.home); function onMenuClick(e:MouseEvent = null, mc:DisplayObject = null):void { var mc_: MovieClip = (e == null? mc: e.target) as MovieClip var nome:String = mc_.name; mc_.currentFrame < 10? mc_.gotoAndPlay(2): mc_.gotoAndStop(10); navegaSite("swf/" + nome + ".swf"); if(ativo != mc_) { trace("clique"); ativo.gotoAndPlay(11); ativo = mc_; } } Opção 2: var ativo:MovieClip = new MovieClip(); menu.home.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OVER)); menu.home.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); //ATIVA BOTÃO INICIAL function onMenuClick(e:MouseEvent):void { navegaSite("swf/" + e.target.name + ".swf"); trace(e.target.name); if(ativo != e.target) { trace("clique"); ativo.gotoAndPlay(11); ativo = e.target as MovieClip; } } Resumo: Modo Elektra e modo Carneirinho funcionam... Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Maio 30, 2012 Mestre, valeu mesmo!!! :worship: Eu tinha tentado adicionar esta linha: menu.home.dispatchEvent(new MouseEvent(MouseEvent.CLICK)) Naturalmente deu erro, pela falta de outra complementar. Vi alguns arquivos com uso do dispatchEvent, como por exemplo, um swf carregado 'remover' a si mesmo, mas me falta conhecimento para como e quando usar. Eu chego lá. Improviso com um botão 'X' (fechar) no container com visible = true/false. Funfa lindo. Apenas por conta de estudo, se possível. Caso eu crie um único btn_mc e exporte pela Library, adicione o texto por Array (melhor se for por XML) e posicione com um for. O container seria um Movie Clip (ou Sprite) criado pelo action para poder manipular com a TweenMax. É comum instanciar os botões assim (livro - Aprendendo AS3): btn.name = "button" + (i + 1); Mas meu code funciona com os botões tendo o mesmo nome que o swf. Pode me sugerir algo? Ganhei um sistema multilínguas com XML que futuramente pretendo adicionar a este arquivo (translate de todas as páginas e menu em um único clique na index). Agradeço muito pelo auxílio, que você receba sempre multiplicado. Abraços :grin: ... tô feliz, ganhei o meu dia (eu ralo) Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Maio 30, 2012 Não entendi direito a sua dúvida, o que dá de errado quando você tenta fazer dessa forma? Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Maio 30, 2012 Ahahahhhh, tá tudo ok! Botão ativo lindo. :lol: A pergunta 'extra' sobre Export e XML ainda não tentei fazer, daí pedir uma sugestão. Fiquei delirando aqui, sem dúvida que vou encarar. Vejo isso, se necessário (99,9%) crio um novo tópico e posto o code. Grande abraço Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Maio 30, 2012 Melhor né? Nova dúvida, novo tópico. Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Maio 30, 2012 Fome de conhecimento, repare não. :innocent: Tenho alguns exemplos com XML, vamos ver que bicho dá. ... vai se preparando :clap: grandes emoções em breve Compartilhar este post Link para o post Compartilhar em outros sites