Natan Alves - Flash Developer
RSS

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:, ,

Compartilhe:

Comentários

  1. 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