Nesse post vamos trabalhar com botões em AS 3.0 então ao trabalho, no actionScript 2.0(AS 2.0) para fazer ações com botões e movieclips era da seguinte forma:
1 2 3 4 5 | meubotao.onRollOver = function():Void{ //faz alguma coisa } |
Em acitonScript 3.0(AS 3.0) houve algumas mudanças, de inicio você tem que adicionar os eventos no movieclip e falar qual a função que vai ser chamada veja o exemplo abaixo.
1 2 3 4 5 6 7 | meubotao.addEventListener(MouseEvent.MOUSE_OVER, minhaFuncao); function minhaFuncao(e:MouseEvent):void{ //faz alguma coisa } |
Na linha um adicionamos o evento especificamos o Tipo de evento no exemplo é o evento de mouse o mouse_over igual ao onRollOver do actionScript 2.0. Na assinatura da função temos de que definir o tipo de parâmetro que a função vai receber, neste caso a variável “e” do tipo MouseEvent, lembrem toda vez que adicionarmos um evento a função que é chamada tem que receber um parâmetro do tipo do evento que foi adicionado. O “this” que usamos dentro da função para fazer referência a quem chama a função em AS2.0 foi substituído pelo “target” do evento. Obs. Em outros casos o this tem o uso normal. vamos complementar o nosso exemplo:
1 2 3 4 5 6 7 8 | meubotao.buttonMode = true; meubotao.addEventListener(MouseEvent.MOUSE_OVER, minhaFuncao); function minhaFuncao(e:MouseEvent):void{ e.target.alpha = 0.5 } |
Na linha 1 foi alterado um parâmentro em nosso botão(movieClip) “buttonMode” essa propriedade surgiu em AS3 e por padrão ela é inicializada com false então para o nosso botão ficar com aquela “mãozinha” quando o mouse passar sobre nosso movieclip . Na linha 4 estamos modificando a propriedade alpha do target ou seja de quem chamou a função nesse caso o meubotao. Notem que diferente de AS2.0 a propriedade alpha escrevesse sem o “_” isso para outras propriedades como x , y e rotation. Outras propriedades como _xscale e _yscale agora são scaleX e scaleY. Vamos então usar o TweenLite nos eventos dos botôes(movieClips). Lembrando quem não possui as classes do TweenLite clique aqui para baixar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import gs.TweenLite; import gs.easing.*; meubotao.buttonMode = true; meubotao.addEventListener(MouseEvent.MOUSE_OVER, over); meubotao.addEventListener(MouseEvent.MOUSE_OUT, out); meubotao.addEventListener(MouseEvent.CLICK, clicou); function over(e:MouseEvent):void{ TweenLite.to(e.target, 0.7, {alpha:0.7, ease:Expo.easeOut}); } function out(e:MouseEvent):void{ TweenLite.to(e.target, 0.7, {alpha:1, ease:Expo.easeOut}); } function clicou(e:MouseEvent):void{ trace("clicou"); } |
No ultimo exemplo implementamos as ações over, out e clique do movieclip.
Até o próximo post.
Parabéns Fellyph! muito boa a sua explicação, porém sou iniciante na área e gostaria de saber como transferir exatamente o seguinte código:
on (rollOver) {
gotoAndPlay(3);
}
on (rollOut) {
gotoAndPlay(11);
}
on (release) {
getURL(“promocoes.html”);
}
Gostaria de fazer isso em Action script 3.0
e não consigo!
O marcel se é mane mermo hein!!
Se liga no seu codigo em AS3:
botao_mc.buttonMode = true;
botao_mc.addEventListener(MouseEvent.CLICK, clica);
botao_mc.addEventListener(MouseEvent.MOUSE_OVER, over);
botao_mc.addEventListener(MouseEvent.MOUSE_OUT, out);
function clica(e:MouseEvent):void{
getURL(”promocoes.html”);
}
function over(e:MouseEvent):void{
gotoAndPlay(3);
}
function out(e:MouseEvent):void{
gotoAndPlay(11);
}
Olá, boa noite!
Estou a realizar um trabalho para a faculdade mas estou com alguns problemas em criar as iigações necessárias com actionscript3 (tenho 4 botões e os respectivos conteúdos feitos, mas não os consigo ligar).
Será que podia contar com a sua ajuda?
Obrigada.
OLÁ AMIGO TUDO BEM SEGUINTE
FIZ UMA ABERTURA ANIMADA NO FLASH
A GRANDE PARTE DAS ANIMAÇÕES EU USEI MOVIE CLIPS E NÃO GRAPHICS COM ALGUNS CODIGOS EM ACTION 3
FIZ UM BOTÃO GERAL PARA RODAR TODAS AS ANIMAÇÕES SEJAM AS EM GRAPHIS E AS MOVIE CLIPS
POREM ESTE BOTÃO NÃO ESTA RESPONDENDO
O CÓDIGO QUE EU COLOQUEI NELE E ESTE AI EM BAIXO
ver_denovo.addEventListener(MouseEvent.CLICK,rodartudo);
function rodartudo(event:MouseEvent):void {
play();
}
O que devo fazer
Grato pela sua atenção
Evander
Olá evander,
1 – Você tem que verificar onde está esse código?
2 – Se o nome de instância do botão está correto?
3 – quem vc quer chamar a função play(). no caso que vc mostrou vc está dando play no stage.
4 – verificar ser realmente a função rodartudo está sendo chamada dentro da função vc pode colocar um trace(“chamou”) se não aparecer no output “chamou” então quer dizer que a função não está sendo chamada.
Sim amigo
pelo vistoso esta ativando o stage ou seja apenas a animação que são graphico estão sendo ativadas já os movie cips não
eu queria que este botão desse play em todas as animaçãoes
uso o flash cs4
Grato
Parabens Otimo tutorial. Sou design e nao me prendo muito a programaçao e estou iniciando no AS3 agora.
Obrigado pelo Tutorial.