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 (palco) */
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 onReleaseOutside */
/* Remove o Listener */
stage.removeEventListener(MouseEvent.MOUSE_UP, btRelease);
trace("onReleaseOutside");
} else {
/* Sua ação relativa ao evento onRelease */
/* Remove o Listener */
stage.removeEventListener(MouseEvent.MOUSE_UP, btRelease);
trace("onRelease");
}
}
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
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.