Guerreirorj 0 Denunciar post Postado Agosto 11, 2010 Boa noite! Tenho um background que gostaria que movesse de um lado para o outro - através de botões - conforme sua posição em determinado momento. Por exemplo: Estando numa posição 1 e clicando no botão 2, o bg avançaria frame a frame até a posição 2; Estando numa posição 2 e clicando no botão 3, o bg avançaria frame a frame até a posição 3; Estando numa posição 3 e clicando no botão 1, o bg retrocederia frame a frame até a posição 1; Verifiquei algumas dicas no fórum, mas só em versões anteriores do AS o que não me permitiu boa compreensão. Muito obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Agosto 11, 2010 Olá Guerreirorj. A princípio sugere o uso de uma função com ENTER_FRAME. Por favor informe as tentativas que já fez, não importa que contenham erros, fica melhor para obter o auxílio. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Guerreirorj 0 Denunciar post Postado Agosto 11, 2010 Olá, Elektra! Nesse código abaixo, meu mc (bg) só está avançando nos botões 1 e 2, normalmente com gotoAndPlay, e no botão 3 ele rebobina até o início do mc. Não é isso que desejo. Minha idéia era usar algo do tipo "se o currentFrame < destino, AVANÇE até o destino; senão se o currentFrame > destino, RETROCEDA até o destino". Destino seria, portanto, um ponto na animação do mc que seria chamado pelos botões. O background iria para a direita ou para a esquerda conforme o botão acionado e também pela sua posição atual. Mais ou menos como olhar para os lados, frame por frame. EStou estudando o prevFrame, mas não sei se vai me atender, pois parece que ele volta tudo e não somente para um ponto determinado. Ufff...rs Muito obrigado. bg.stop(); bot1.addEventListener(MouseEvent.CLICK, cena1); bot2.addEventListener(MouseEvent.CLICK, cena2); bot3.addEventListener(MouseEvent.CLICK, saiu); function cena1(e:MouseEvent):void{ bg.gotoAndPlay(2); } function cena2(e:MouseEvent):void{ bg.gotoAndPlay(16); } function saiu(e:MouseEvent):void{ bg.addEventListener(Event.ENTER_FRAME, volta); } function volta(e:Event):void{ bg.prevFrame(); if(bg.currentFrame==1){ bg.removeEventListener(Event.ENTER_FRAME, volta); } } Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Agosto 11, 2010 Se tu fizer mc.prevFrame() ele só vai voltar 1 frame Se tu colocar ele dentro do ENTER_FRAME ele vai voltar até o frame 1 Ai você tem que fazer isso que você já fez mesmo bg.currentframe == 1 Veja o exemplo: stop(); this.addEventListener(Event.ENTER_FRAME, vai); function vai(e:Event):void{ if(this.currentFrame == 50){ this.removeEventListener(Event.ENTER_FRAME, vai); this.addEventListener(Event.ENTER_FRAME, volta); } trace(this.currentFrame); this.nextFrame(); } function volta(e:Event):void{ if(this.currentFrame == 1){ this.removeEventListener(Event.ENTER_FRAME, volta); this.addEventListener(Event.ENTER_FRAME, vai); } trace(this.currentFrame); this.prevFrame(); } Só criar um flash com 51 frames ou 50 clicar sobre o primeiro frame e colar o código... você vai ver que ele vai ficar indo e voltando mostrando os frames que ele ta passando. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Agosto 12, 2010 Você pode usar o nextFrame e definir o frame que deseja que a animação pare. Por exemplo, clicou no botão 1 (dir_btn), avança até o frame 30, clicou novamente, avança até o 60, outra vez, avança até o 90. stop(); //EventListeners que vão cuidar os cliques nos botões dir_btn.addEventListener(MouseEvent.CLICK, proximo); esq_btn.addEventListener(MouseEvent.CLICK, anterior); function proximo(me:MouseEvent):void { stage.addEventListener(Event.ENTER_FRAME, onFramesNext); } function anterior(me:MouseEvent):void { stage.addEventListener(Event.ENTER_FRAME, onFramesPrev); } function onFramesNext(e:Event):void { //manda para o próximo frame nextFrame(); //verifica se o frame atual é o frame 30 if(currentFrame == 30) { //se for o frame 30, removemos o EventListener, ou seja, //paramos a animação stage.removeEventListener(Event.ENTER_FRAME, onFramesNext); } if(currentFrame == 60) { stage.removeEventListener(Event.ENTER_FRAME, onFramesNext); } if(currentFrame == 90) { stage.removeEventListener(Event.ENTER_FRAME, onFramesNext); } Depois é criar uma função semelhante para o caminho de volta (esq_btn). Neste code uso apenas 2 botões, um avança e outro retrocede, em qualquer posição. Para mais botões ou outras funcionalidades terá de adaptar o code. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Guerreirorj 0 Denunciar post Postado Agosto 24, 2010 Olá, Berseck! Minha idéia é ir e voltar, parando em frames específicos conforme a posição do mc: se ele estiver avançado, volta para o frame especificado; se estiver avançado... avança. Vou estudar seu script e tenho certeza que será de grande ajuda. Muito obrigado e abraços. Olá, Elektra! Vou fazer um teste com o script que você me passou e depois te digo. Farei os teste com os 2 botões e depois tentarei com botões de menu. Tenho certeza que dará certo. Muito obrigado e tudo de bom. Olá, Elektra! Não respondi antes pois eu havia feito uma pausa no projeto. Testei seu script e o princípio é este mesmo. Rodou beleza! Preciso apenas fazer as adequações para funcionar com botões de menu: indo ou voltando conforme o item clicado. Quando fizer essas adequações posto aqui. Show de bola! Muito obrigado e tudo de bom. Compartilhar este post Link para o post Compartilhar em outros sites
Elektra 102 Denunciar post Postado Agosto 24, 2010 Olá, Elektra! Não respondi antes pois eu havia feito uma pausa no projeto. Testei seu script e o princípio é este mesmo. Rodou beleza! Preciso apenas fazer as adequações para funcionar com botões de menu: indo ou voltando conforme o item clicado. Quando fizer essas adequações posto aqui. Show de bola! Muito obrigado e tudo de bom. Obrigada pelo retorno, isso é válido para outros colegas do fórum. Se possível informe um link com o o tipo de menu que deseja, fica melhor para identificar o code adequado. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Agosto 24, 2010 Como eu disse ai você faz if else comparando o frame como eu fiz em meu código... Ai você vai conseguir o que quer. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Guerreirorj 0 Denunciar post Postado Agosto 24, 2010 Entendi, berseck! Assim que concluir eu dou um retorno. Obrigado e abraços Compartilhar este post Link para o post Compartilhar em outros sites