nerisantos 0 Denunciar post Postado Abril 22, 2014 Pessoal, estou fazendo um jogo de memória e gostaria de melhorar o código abaixo: Ao clicar no botão é aberto e acessado um determinado frame do movieclip. Gostaria de saber se tem como passar o valor (do frame) para a função através do botão (neste caso bastaria uma única função para abrir as informações sobre a fruta). O jogo pode ser acessado em http://www.nerisantos.com.br/atividades/memoria_frutas.swf abacate_bt_info.addEventListener(MouseEvent.CLICK, abacate_info); maca_bt_info.addEventListener(MouseEvent.CLICK, maca_info); uva_bt_info.addEventListener(MouseEvent.CLICK, uva_info); mamao_bt_info.addEventListener(MouseEvent.CLICK, mamao_info); manga_bt_info.addEventListener(MouseEvent.CLICK, manga_info); pessego_bt_info.addEventListener(MouseEvent.CLICK, pessego_info); caju_bt_info.addEventListener(MouseEvent.CLICK, caju_info); jabuticaba_bt_info.addEventListener(MouseEvent.CLICK, jabuticaba_info); banana_bt_info.addEventListener(MouseEvent.CLICK, banana_info); acai_bt_info.addEventListener(MouseEvent.CLICK, acai_info); function abacate_info(event:MouseEvent):void { frutas_info.gotoAndStop(frame); exibe_info(); } function maca_info(event:MouseEvent):void { frutas_info.gotoAndStop(3); exibe_info(); } function uva_info(event:MouseEvent):void { frutas_info.gotoAndStop(4); exibe_info(); } function mamao_info(event:MouseEvent):void { frutas_info.gotoAndStop(5); exibe_info(); } function manga_info(event:MouseEvent):void { frutas_info.gotoAndStop(6); exibe_info(); } function pessego_info(event:MouseEvent):void { frutas_info.gotoAndStop(7); exibe_info(); } function caju_info(event:MouseEvent):void { frutas_info.gotoAndStop(8); exibe_info(); } function jabuticaba_info(event:MouseEvent):void { frutas_info.gotoAndStop(9); exibe_info(); } function banana_info(event:MouseEvent):void { frutas_info.gotoAndStop(10); exibe_info(); } function acai_info(event:MouseEvent):void { frutas_info.gotoAndStop(11); exibe_info(); } function exibe_info() { setChildIndex(frutas_info, numChildren - 1); frutas_info_bt_fechar.x=530; frutas_info_bt_fechar.y=70; frutas_info_bt_fechar.visible=true; setChildIndex(frutas_info_bt_fechar, numChildren - 1); } frutas_info_bt_fechar.addEventListener(MouseEvent.CLICK, fechar_info); function fechar_info(event:MouseEvent):void { frutas_info.gotoAndStop(1); frutas_info_bt_fechar.visible=false; } Compartilhar este post Link para o post Compartilhar em outros sites
ViniciusSaab 0 Denunciar post Postado Abril 23, 2014 Se puder mandar o código todo, ou o fla do arquivo fica melhor, porém se quiser apenas saber como pega o frame atual de um determinado mc a sintaxe é mc.currentFrame, ai é só ver como encaixa melhor no seu contexto. Da pra dar um exugada boa nesse código adicionando os eventos no stage e comparando o label dos targets Compartilhar este post Link para o post Compartilhar em outros sites
nerisantos 0 Denunciar post Postado Abril 25, 2014 Olá Vinicius, obrigado por responder, não tenho o fonte agora (está em outro micro - depois posto) mas o que desejo é usar vários botões na tela e usar somente uma função passando o parâmetro a ela (no caso passando o número do frame que desejo exibir) - é possível? stop(); botao1.addEventListener(MouseEvent.CLICK, vaiparaframex);// botão para exibir o frame 5 botao2.addEventListener(MouseEvent.CLICK, vaiparaframex);// botão para exibir o frame 10 botao3.addEventListener(MouseEvent.CLICK, vaiparaframex);//botão para exibir o frame 15 // tem como passar o valor pelo botão - algo assim... //botao3.addEventListener(MouseEvent.CLICK, vaiparaframex[15]); function vaiparaframex(event:MouseEvent[framex]):void { gotoAndPlay(framex); //dependendo do botão iria para o frame desejado, algo gotoAndPlay(frameX); //o valor do frameX seria passado pelo botão; } Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Abril 25, 2014 Isso não existe >> vaiparaframex[15] Se entendi corretamente, uma forma simples de 'enxugar' o código: Adicione seus botões em um Array, crie uma única função e dentro dela um switch. Com o 'target' do botão clicado, referente a um dos índices do array irá acessar o 'case' referente a enviar para o frame 'x', 'y', 'z', etc. abs Compartilhar este post Link para o post Compartilhar em outros sites
PERCY.FERNANDES 0 Denunciar post Postado Abril 25, 2014 Bom dia Não sei se ajuda, mas quando vou manipular a timeline para o código decidir se o movieclip vai pra frente nextFrame() ou para trás prevFrame(), eu uso uma condicional comparando this.currentFrame() que devolve o número do frame. Já se é pra comparar com o botão acionado eu uso evt.currentTarget.name que devolve o nome da instância que disparou o evento evt. Compartilhar este post Link para o post Compartilhar em outros sites
ViniciusSaab 0 Denunciar post Postado Abril 25, 2014 Já tentou colocar o evento no stage e pegar o target? algo do tipo stop(); //se tiver algo dentro do mc do botão usa mouseChildren pra nao ter problema stage.addEventListener(MouseEvent.CLICK, vaiparaframex);// botão para exibir o frame 5 function vaiparaframex(e:MouseEvent):void { //faça um if para saber se é um botão mesmo o target, pode usar o exemplo a baixo mas //pegando as primeiras letras e vendo se é botao //pega o nome do botão1 tira só o 1 e transforma em int avancaFrame(int(e.target.name.charAt(5))) } function avancaFrame(num:int):void { mc.gotoAndPlay(num) } Compartilhar este post Link para o post Compartilhar em outros sites
nerisantos 0 Denunciar post Postado Abril 27, 2014 Obrigado a todos que responderam e visualizaram o tópico. Ainda estou elaborando o jogo, mas segue abaixo o link para visualização http://www.nerisantos.com.br/atividades/memoria_frutas.html O novo código elaborado após as ajudas segue abaixo: abacate_bt_info.addEventListener(MouseEvent.MOUSE_OVER, define_frame_info); maca_bt_info.addEventListener(MouseEvent.MOUSE_OVER, define_frame_info); uva_bt_info.addEventListener(MouseEvent.MOUSE_OVER,define_frame_info); mamao_bt_info.addEventListener(MouseEvent.MOUSE_OVER,define_frame_info); manga_bt_info.addEventListener(MouseEvent.MOUSE_OVER,define_frame_info); pessego_bt_info.addEventListener(MouseEvent.MOUSE_OVER, define_frame_info); caju_bt_info.addEventListener(MouseEvent.MOUSE_OVER,define_frame_info); jabuticaba_bt_info.addEventListener(MouseEvent.MOUSE_OVER,define_frame_info); banana_bt_info.addEventListener(MouseEvent.MOUSE_OVER, define_frame_info); acai_bt_info.addEventListener(MouseEvent.MOUSE_OVER, define_frame_info); cupuacu_bt_info.addEventListener(MouseEvent.MOUSE_OVER, define_frame_info); abacaxi_bt_info.addEventListener(MouseEvent.MOUSE_OVER,define_frame_info); acerola_bt_info.addEventListener(MouseEvent.MOUSE_OVER,define_frame_info); function define_frame_info(event:MouseEvent):void { switch((event.target.name)) { case "abacate_bt_info": frame_frutas_info=2; case "maca_bt_info": frame_frutas_info=3; case "uva_bt_info": frame_frutas_info=4; case "mamao_bt_info": frame_frutas_info=5; case "manga_bt_info": frame_frutas_info=6; case "pessego_bt_info": frame_frutas_info=7; case "caju_bt_info": frame_frutas_info=8; case "jabuticaba_bt_info": frame_frutas_info=9; case "banana_bt_info": frame_frutas_info=10; case "acai_bt_info": frame_frutas_info=11; case "cupuacu_bt_info": frame_frutas_info=12; case "abacaxi_bt_info": frame_frutas_info=13; case "acerola_bt_info": frame_frutas_info=14; } exibe_info(); } Obrigadão!!! PS: Sugestões são muito bem vindas para melhorar o jogo. Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Abril 27, 2014 Segue a sugestão de adicionar seus botões em um Array (e identificar o click pelo índice/target). Todo 'case', exige um 'break', recomendável o 'default'. Legal conferir o Adobe Help AS3, nada de assassinar as 'boas práticas'. Compartilhar este post Link para o post Compartilhar em outros sites
nerisantos 0 Denunciar post Postado Abril 27, 2014 Segue a sugestão de adicionar seus botões em um Array (e identificar o click pelo índice/target). Todo 'case', exige um 'break', recomendável o 'default'. Legal conferir o Adobe Help AS3, nada de assassinar as 'boas práticas'. Valeu Elektra, ao fazer o teste percebi o erro e fiz as correções, obrigado pelas informações: (ele não apresenta erro na compilação, porém não funciona - fica valendo a última opção) O arquivo fonte (.fla) pode ser acessado no link abaixo (tem vários 'assassinatos', porém aos poucos o código vai sendo melhorado (ehehe): Arquivo Fonte: memoria_frutas.fla Jogar: memoria_frutas.swf Segue abaixo o código com as correções: var frame_frutas_info:Number=1; abacate_bt_info.addEventListener(MouseEvent.MOUSE_OVER, define_frame_info); maca_bt_info.addEventListener(MouseEvent.MOUSE_OVER, define_frame_info); uva_bt_info.addEventListener(MouseEvent.MOUSE_OVER,define_frame_info); mamao_bt_info.addEventListener(MouseEvent.MOUSE_OVER,define_frame_info); manga_bt_info.addEventListener(MouseEvent.MOUSE_OVER,define_frame_info); pessego_bt_info.addEventListener(MouseEvent.MOUSE_OVER, define_frame_info); caju_bt_info.addEventListener(MouseEvent.MOUSE_OVER,define_frame_info); jabuticaba_bt_info.addEventListener(MouseEvent.MOUSE_OVER,define_frame_info); banana_bt_info.addEventListener(MouseEvent.MOUSE_OVER, define_frame_info); acai_bt_info.addEventListener(MouseEvent.MOUSE_OVER, define_frame_info); cupuacu_bt_info.addEventListener(MouseEvent.MOUSE_OVER, define_frame_info); abacaxi_bt_info.addEventListener(MouseEvent.MOUSE_OVER,define_frame_info); acerola_bt_info.addEventListener(MouseEvent.MOUSE_OVER,define_frame_info); function define_frame_info(event:MouseEvent):void { switch((event.target.name)) { case "abacate_bt_info": frame_frutas_info=2; break; case "maca_bt_info": frame_frutas_info=3; break; case "uva_bt_info": frame_frutas_info=4; break; case "mamao_bt_info": frame_frutas_info=5; break; case "manga_bt_info": frame_frutas_info=6; break; case "pessego_bt_info": frame_frutas_info=7; break; case "caju_bt_info": frame_frutas_info=8; break; case "jabuticaba_bt_info": frame_frutas_info=9; break; case "banana_bt_info": frame_frutas_info=10; break; case "acai_bt_info": frame_frutas_info=11; break; case "cupuacu_bt_info": frame_frutas_info=12; break; case "abacaxi_bt_info": frame_frutas_info=13; break; case "acerola_bt_info": frame_frutas_info=14; break; } exibe_info(); } Compartilhar este post Link para o post Compartilhar em outros sites