Em um dos meus tutoriais sobre o Flash CS3, mostro que os eventos do ActionScript 3 é diferente dos eventos do ActionScript 2. Não existe mais o onPress, onRelease, onRollOver, onRollOut, etc. Todos os eventos relacionados a Mouse está na Classe MouseEvent.
Mas a maior mudança foi a não inclusão de um evento para substituir o onReleaseOutside, felizmente existe uma solução para esse problema. Criaremos um MovieClip com instancia de botao, colocaremos a seguinte ação:
/* Adicionamos o envento relativo ao onPress no botao */ botao.addEventListener(MouseEvent.MOUSE_DOWN, btPress); /* Função relativo ao onPress */ function btPress(event:MouseEvent):void { /* Adicionamos o evento relativo ao onRelease no stage */ stage.addEventListener(MouseEvent.MOUSE_UP, btRelease); trace("onPress"); } /* Função relativa ao onRelease */ function btRelease(event:MouseEvent):void { /* Verifica se o alvo é realmente o botão */ if (event.target.name == "botao") { /* Sua ação relativa ao evento onRelease */ /* Remove o Listener */ stage.removeEventListener(MouseEvent.MOUSE_UP, btRelease); trace("onRelease"); } else { /* Sua ação relativa ao evento onReleaseOutside */ /* Remove o Listener */ stage.removeEventListener(MouseEvent.MOUSE_UP, btRelease); trace("onReleaseOutside"); } } |
Deixa eu explicar o código. Primeiro adicionamos um Listener ao nosso botão criado. O listener vai ser acionado quando clicarmos com o botão esquerdo do Mouse. Ao clicar, a função btPress é acionada.
Na função btPress, adiciono um outro Listener, dessa vez em nosso palco (stage). O listener vai ser acionado quando soltarmos o botão esquerdo do Mouse. Ao soltar, a função btRelease é acionada.
Na função btRelease, verificamos se o alvo (target) é o nosso botão, se for, removemos o listener do palco para que não fique sendo acionado quando não deve e usamos nossa ação referente ao onRelease. Se o alvo não for nosso botão, removemos o Listener do palco e usamos nossa ação referente ao onReleaseOutside.
Teste seu filme e vejam que agora temos um evento onReleaseOutside em ActionScript 3. Nesse exemplo mostra a real vantagem de se usar Listener em nossos Eventos, em uma função podemos usar para vários MovieClips e botões, mas isso é assunto para uma outra dica.
Qualquer dúvida é só falar.
[]s
Tags:ActionScript 3, Flash, Flash CS3
Comentários
Isso me deu maior jeito..
Andava a procurar até que encontrei aqui…
só uma pequena observação, onde você tem “onRelease” no trace tá trocado com o “onReleaseOutside” já que quando o mouse se liberta fora do botão seria ReleaseOutside. Mas dá para entender que tá funcionando.
Valeu, deu uma grande ajuda aqui. 😉
PSantos
28/03/2008