Account Options

  1. Sign in
The old Google Groups will be going away soon.
Switch to the new Google Groups.
Google Groups Home
« Groups Home
Message from discussion Teclas de atalhos nos botões
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Beck Novaes  
View profile   Translate to Translated (View Original)
 More options Apr 10 2008, 2:29 pm
From: Beck Novaes <beck.nov...@gmail.com>
Date: Thu, 10 Apr 2008 11:29:43 -0700 (PDT)
Local: Thurs, Apr 10 2008 2:29 pm
Subject: Re: Teclas de atalhos nos botões
Como isto parece ser algo que muita gente pode precisar, acho que este
componente pode ser um bom ponto de partida para uma boa solução para
o problema:
http://groups.google.com/group/flexdev/web/ShortKey.zip

A idéia é poder usar algo mais ou menos assim:

<local:ShortKey key="{Keyboard.HOME}" ctrlKey="true"
handler="{endHandler}" args="{['Ctrl + Home', 'arg2']}"/>

O componente tem suporte para a tecla CTRL e Shift em combinação com
as demais teclas. Eu achei esta a parte mais legal de implementação,
visto que pela primeira vez no Flex eu pude usar o Bitwise XOR.

var checkShiftKey:Boolean = !(Number(event.shiftKey) ^
Number(shiftKey));

Ainda está bem simples e talvez precise de alguma refatoração, mas
como eu disse pode ser um bom ponto de partida.

O .zip é um projeto Flex que você pode importar e ver funcionando.

[]'s
Beck Novaes

On Apr 10, 12:35 pm, Sá <z2s...@gmail.com> wrote:

> Daniel, obrigado pela resposta, o dispatchEvent funcionou
> direitinho...

> Só não entendi direito ainda essa parte que voce mencionou sobre
> colocar o event listener no container...

> Tipo, pra cada Title Window por exemplo, digamos que eu tenho 2 botoes
> com shortKey, eu teria que fazer 2 ouvintes em cada TitleWindow?

> Muito obrigado pela ajuda! Abraço!

> On 10 abr, 12:51, Daniel Lopes <danielvlo...@gmail.com> wrote:

> > Coloca o event listener no container de seus botoes e faz um case para
> > ver qual tecla foi apertada.
> > Para dispara o evento do botão use dispatch, tipo assim:

> > b1.dispatchEvent(new MouseEvent(MouseEvent.CLICK));

> > On 10 abr, 10:44, Sá <z2s...@gmail.com> wrote:

> > > Só mais uma coisa!

> > > Vejam com eu fiz,,,
> > > Coloquei:
> > > addEventListener(KeyboardEvent.KEY_DOWN, this.mubtn.interceptKey

> > > Onde mubtn é o meu botão...

> > > E interceptKey é:
> > >                 public function interceptKey( event:flash.events.KeyboardEvent ) :
> > > void{
> > >                         if (event.keyCode==_key){
> > >                                 Alert.show("Apertou!")
> > >                         }
> > >                 }

> > > As dúvidas agora, pra cada botão com tecla de atalho eu vou ter que
> > > colocar um addEventListener?
> > > E ali, onde tem Alert.show("Apertou!") eu quero que execute o clique
> > > do botão... Como faço isso?

> > > Valeu pessoal! Abraço!

> > > On 10 abr, 10:23, Sá <z2s...@gmail.com> wrote:

> > > > Pessoal, muito obrigado a todos pela ajuda...
> > > > Daniel, muito obrigado pelo exemplo que você postou, vai se tornar uma
> > > > boa referencia mais a frente...
> > > > Beck, meu problema era exatamente este que você mencionou! Muito
> > > > Obrigado...
> > > > Luís, eu preciso basicamente do ESC e do ENTER, mais a frentre quem
> > > > sabe eu precisse de outras teclas... Obrigado também!

> > > > On 10 abr, 08:22, Luis Eduardo - Suprasis Softwares

> > > > <ledua...@suprasis.com.br> wrote:
> > > > >     Só lembrando que determinadas teclas e/ou conjunto de teclas não
> > > > > estão disponíveis para o FlashPlayer, logo não são utilizáveis (como em
> > > > > um programa Delphi seriam ou provavelmente em um AIR também).
> > > > >     Um exemplo é a tecla F5, ALT+F4, CTRL+W. Mas existem umas tantas
> > > > > outras...  e se não me engano (uns 90% de certeza, se é que certeza
> > > > > existe em 90%) isso varia de browser pra browser, mesmo o Flex tentando
> > > > > esconder essa briga entre browsers pra gente.

> > > > >     Então a dica é: antes de escolher as teclas, dê uma testada se ela
> > > > > está disponível nos navegadores de seus clientes.

> > > > >     Ah!  detalhe sórdido...  as teclas disponíveis dependem também dos
> > > > > sistemas instalados no computador do usuário. Se um google toolbar, por
> > > > > exemplo, estiver instalado, uma combinação de tecla que não me lembro
> > > > > qual, fica pra ele e o FlashPlayer não a enxerga mais. Sei lá quais
> > > > > teclas o Yahoo toolbar ou o Mininova toolbar usam.

> > > > >     Isso o marketing da Adobe não fala pra gente.... enfim...

> > > > >     Queria dar notícias mais alegres  :)

> > > > >     abraços,
> > > > >     Luís Eduardo

> > > > > Daniel Lopes escreveu:

> > > > > > Obrigado Beck, não tinha me atentado para isso... realmente acho que o
> > > > > > problema dele vai ser resolvido colocando os listeners no container
> > > > > > onde está o componente.
> > > > > > Bem de qualquer forma fica ai o exemplo se alguem procurar por isso no
> > > > > > grupo.

> > > > > > Abraço.

> > > > > > On 9 abr, 23:51, Beck Novaes <beck.nov...@gmail.com> wrote:

> > > > > >> Hm... acho que o problema do nosso amigo é outro. Pelo que eu pude
> > > > > >> entender ele já esta familiarizado com a API necessária para capturar
> > > > > >> os eventos do teclado. Suponho que o componente que ele estendeu não
> > > > > >> esteja funcionando porque ele adicionou o Listener para o botão, assim
> > > > > >> o evento do teclado só será capturado se o botão tiver o foco. Da
> > > > > >> mesma forma, no seu exemplo o evento só será capturado se o textInput
> > > > > >> tiver o foco. Tanto o seu exemplo quanto o dele poderiam ser
> > > > > >> independentes do componente que tivesse o foco se o Handler estivesse
> > > > > >> tratando um evento do Application no lugar de um componente
> > > > > >> específico. No seu exemplo basta remover o substituir
> > > > > >> "tf.addEventListener(KeyboardEvent.KEY_DOWN,reportKeyDown)" por
> > > > > >> "addEventListener(KeyboardEvent.KEY_DOWN,reportKeyDown)" ou seja, sem
> > > > > >> a referência para o textInput. No caso dele, talvez ele tenha que
> > > > > >> adicionar o listener para o Application.

> > > > > >> mx.core.Application.application.addEventListener(KeyboardEvent.KEY_DOWN,
> > > > > >> myHandler);

> > > > > >> Será que é isso, Sá, que você precisa?

> > > > > >> []'s
> > > > > >> Beck Novaes

> > > > > >> On 9 abr, 23:15, Daniel Lopes <danielvlo...@gmail.com> wrote:

> > > > > >>> Ai está o exemplo que prometi... é só dar uma olhada na classe
> > > > > >>> flash.ui.Keyboard . Cada tecla tem uma constante e vc pode usar isso
> > > > > >>> como shortcut, no exemplo se vc aperta SHIFT ele muda a cor do
> > > > > >>> componente e se apertar ctrl muda de cor de novo.

> > > > > >>> <?xml version="1.0" encoding="utf-8"?>
> > > > > >>> <mx:Application
> > > > > >>>         xmlns:mx="http://www.adobe.com/2006/mxml"
> > > > > >>>         layout="absolute"
> > > > > >>>         creationComplete="initApp()">

> > > > > >>>         <mx:Script>
> > > > > >>>         <![CDATA[
> > > > > >>>                 import flash.ui.Keyboard;

> > > > > >>>                 public function initApp():void{
> > > > > >>>                         tf.addEventListener(KeyboardEvent.KEY_DOWN,reportKeyDown);
> > > > > >>>                 }

> > > > > >>>                 public function reportKeyDown(event:KeyboardEvent):void
> > > > > >>>                 {
> > > > > >>>                     trace("Tecla apertada: " + String.fromCharCode(event.charCode) +
> > > > > >>> "(codigo:" + event.keyCode + " character code: " + event.charCode +
> > > > > >>> ")");
> > > > > >>>                     if (event.keyCode == Keyboard.CONTROL)
> > > > > >>>                         tf.setStyle('backgroundColor',0xFFFF00);
> > > > > >>>                     else if (event.keyCode == Keyboard.SHIFT)
> > > > > >>>                         tf.setStyle('backgroundColor',0xFF0000);
> > > > > >>>                 }

> > > > > >>>         ]]>
> > > > > >>>         </mx:Script>

> > > > > >>>         <mx:TextInput id="tf" />

> > > > > >>> </mx:Application>

> > > > > >>> On 9 abr, 21:55, Daniel Lopes <danielvlo...@gmail.com> wrote:

> > > > > >>>> cara... tem um tanto de coisa nesse código que não precisa e mudou
> > > > > >>>> para o Flex 3...
> > > > > >>>> Vou fazer um exemplo e posto aqui daqui a pouco

> > > > > >>>> On 9 abr, 19:49, Sá <z2s...@gmail.com> wrote:

> > > > > >>>>> Pessoal, meu cliente pediu para que ao clicar certas teclas executar o
> > > > > >>>>> click de determinados botões...
> > > > > >>>>> Eu trabalho full-time com Flex e ActionScript há menos de 10 dias, e
> > > > > >>>>> sou auto-didata, ou seja, pouca experiência e sem nenhum curso sobre o
> > > > > >>>>> assunto...

> > > > > >>>>> Mas até que a coisa tá indo...

> > > > > >>>>> Então, resolvi criar um classe estendendo o Button, criar um set
> > > > > >>>>> shortKey nessa classe, adicionar um addEventListener do KeyDown e
> > > > > >>>>> intercepta-lo executando o click do botão caso o cidadão tenha
> > > > > >>>>> pressionado a tecla informada na propriedade shortKey... Mas acontece
> > > > > >>>>> que o KeyDown não é interceptado...

> > > > > >>>>> Eu queria saber se já existe a implementação de algo desse tipo, botão
> > > > > >>>>> com tecla de atalho, e se não houver, alguem se dispõe a me ajudar a
> > > > > >>>>> fazer isso? Pelo menos digam ai se eu estou no caminho certo, com o
> > > > > >>>>> raciocino e lógica certa...

> > > > > >>>>> Pretendo disponibilizar esse controle para download no nosso blog,
> > > > > >>>>> será open-source ;)

> > > > > >>>>> Abraço e obrigado desde já!

> > > > > >>>>> Marcus Sáhttp://www.maxup.com.brhttp://www.maxup.com.br/blog


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.