segunda-feira, 8 de fevereiro de 2010

Disparar evento click do botão com Enter

Blz?! mais uma dica relacionada a usabilidade da aplicação. Primeiro vamos ao teste, coloque um botão e tente disparar o evento click usando o mouse FUNCIONA!! (óbvio), agora com ESPAÇO (opa, funciona tbm) e por ultimo tente com ENTER (não? wtf?!)



Para resolver o que na minha visão é um problema é bem simples, basta sobreescrever o método keyDownHandler


package Exemplo {
  import flash.events.KeyboardEvent;
  import flash.events.MouseEvent;
  import flash.ui.Keyboard;
 
  import mx.controls.Button;

  public class Botao extends Button {
    public function Botao() {
      super();
    }
   
    override protected function keyDownHandler(event: KeyboardEvent):void {
      if (!enabled)
        return;

      if (event.keyCode == Keyboard.SPACE || event.keyCode == Keyboard.ENTER)
        dispatchEvent(new MouseEvent(MouseEvent.CLICK));
    }
  }
}




Abraços

5 comentários:

Teria como Voce exemplificar aplicando esse codigo em um projeto flex?

Diego, basta você fazer uma classe que extend de Button (como a do post).

1º - New > ActionScript Class
2º - Cole o código do post
3º - Lembre-se de ajustar o pacote (no post é "Exemplo"
4º - Agora é só compilar

Feito isso você já tem o button personalizado, agora basta usar e para isso em modo Design é só arrastar o componente que você acabou de criar. As demais propriedades são idênticas ao na classe button original, mas agora quando o mesmo estiver com foco você pode pressionar a tecla ENTER

[]´s

Muito Obrigado,já me ajudou muito o problema e que tenho outros componentes que necessitam ser acessado pelo teclado como o DataField e outros pois o sistema tem que ser utilizado pelo teclado.
Teria como me ajudar? desde já agradeço!
Assim muito bom vc ter tocado nesse assunto de usabilidade algo raro em um blog que fala sobre FLEX e AS3 na verdade e o primeiro que vejo falar sobre o assunto.

Cara brilhante post salvou meu pescoço aqui em um projeto... "literalmente" obrigado mesmo :D

Postar um comentário

Twitter Delicious Facebook Digg Stumbleupon Favorites More