teclas tecla sirve reemplaza que portatil para otra funciona funcion dar como combinacion boton flex

flex - sirve - tecla que reemplaza el enter



¿Cuál es la mejor manera de hacer que un botón Flex 3 responda a la tecla Intro? (7)

Claro, podrías hacer algo como esto:

<mx:Script> <![CDATA[ import mx.controls.Alert; private function btn_click(event:MouseEvent):void { Alert.show("Clicked!"); } private function btn_keyDown(event:KeyboardEvent):void { if (event.keyCode == Keyboard.ENTER) btn.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); } ]]> </mx:Script> <mx:Button id="btn" label="Click Me" click="btn_click(event)" keyDown="btn_keyDown(event)" />

... aunque no soy un gran fanático de distribuir eventos en objetos fuera de esos objetos. Un enfoque más limpio podría ser subclasificar el botón, agregar los oyentes y los manejadores dentro de su subclase, y luego enviar el evento de clic desde esa clase. Pero esto debería ayudar a ilustrar el punto. ¡Buena suerte!

En Flex 3, los botones llaman a su manejador de clics cuando son presionados por el mouse, o cuando tienen el foco y el usuario presiona la barra espaciadora.

¿Existe una forma directa de provocar que los botones Flex 3 con foco llamen a su manejador de clics cuando el usuario presiona la tecla enter?


Para algo así como un formulario de inicio de sesión, necesita usar un formulario mx: aquí está el fragmento de código que lo ilustra:

<mx:Form defaultButton="{loadButton}"> <mx:TextInput id="feedURL" /> <mx:Button id="loadButton" label="Load" click="someHandler(event)" /> </mx:Form>

Ingrese la url y presione enter, bam, comportamiento esperado.

Buscado en Google desde aquí


Pruebe el evento "buttonDown"; puede ser enviado en cualquier caso. De lo contrario, es probable que estés mirando usando "keyDown" y verificando la tecla que se presionó.


Aun mejor

private function setValidationFocus(formObject:Object):void { formObject.setFocus(); formObject.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OUT)); // sneaky sneaky formObject.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OVER)); }


Si está enviando un formulario como un diálogo de inicio de sesión o similar, la propiedad "enter" en el TextField es una gran solución:

<mx:TextInput displayAsPassword="true" id="wPassword" enter="handleLoginSubmit()"/>


También puede agregar el oyente KEY_DOWN en la respuesta de Christian al botón mismo. Solo asegúrate de llamar a stopImmediatePropagation. En este ejemplo, dejo que cualquier tecla cause la acción del botón. Y estoy usando el mismo controlador, así que permito cualquier tipo de "Evento". Puede usar diferentes manejadores "cancelClick".

protected function cancelClick(e:Event = null):void{ this.dispatchEvent(new Event(Event.CANCEL)); // do component action e.stopImmediatePropagation(); } override protected function partAdded(partName:String, instance:Object):void { super.partAdded(partName,instance); switch(instance){ case cancel: cancel.addEventListener(MouseEvent.CLICK,cancelClick); cancel.addEventListener(KeyboardEvent.KEY_DOWN,cancelClick); } }


He visto el mismo problema, pero la respuesta de Christian Nunciato me parece que es la mejor. Una cosa más para agregar a su solución, creo que el indicador de burbujeo en btn.dispatchEvent(new MouseEvent(MouseEvent.CLICK)) , debe establecerse en false (btn.dispatchEvent(new MouseEvent(MouseEvent.CLICK, false))) porque el evento debe estar aislado en el botón.