flash - ¿Cómo puedo hacer que Flex solo consuma eventos de desplazamiento y teclado del mouse cuando es útil y, de otro modo, pasarlo al navegador?
actionscript keyboard-shortcuts (3)
La comunicación entre el navegador y el flash se realiza a través de ExternalInterface. ExternalInterface le permite llamar a los métodos de ActionScript desde JavaScript y viceversa.
Buena suerte con eso porque la experiencia demuestra que a menudo es doloroso lidiar con los atajos de teclado y la inconstancia del navegador.
Este me ha estado molestando por un tiempo. Cuando estoy usando la rueda de desplazamiento del mouse para desplazarme hacia arriba y hacia abajo en una página web, y aparece una película flash en la ruta del cursor, la rueda de desplazamiento deja de funcionar. Además, cuando una película flash tiene foco, no puede usar accesos directos del navegador como Ctrl + L o Ctrl + R.
Estoy escribiendo una aplicación flexible ahora y me gustaría encontrar una solución, para que al menos mis usuarios no estén plagados por esta incoherencia en el comportamiento de la interfaz de usuario.
Creo que habría una forma de decirle a flash que propague eventos tales como la rueda de desplazamiento del mouse y la entrada de teclado hacia el navegador a menos que ocurran en un elemento para el cual son útiles, como en un área de texto flexible. No puedo encontrar ninguna solución, ni siquiera nadie hablando de eso.
Específicamente, ¿cómo puedo hacerlo para que:
- Cuando el usuario se desplaza con el mouse, el navegador se desplaza a menos que el mouse esté sobre un contenedor flexible con barra de desplazamiento u otro componente que quiera desplazarse.
- Cuando el usuario presiona un botón o una combinación de botones en el teclado, se propagará al navegador a menos que haya un oyente de teclado activo, o que el cursor esté en un campo de texto, etc.
Agregue un evento que se manejará si se encuentra dentro del flash cuando se encuentra dentro de la interfaz externa de llamada flash para deshabilitar el desplazamiento y obtener Focus for flash.
Cuando salgas del flash todavía podrás activar el evento y llamar a una interfaz externa para enfocar el navegador y detener el desplazamiento del flash.
Me enfrenté al mismo problema. Pero la solución a la que recurrí requiere grandes cambios si tienes una interfaz de usuario compleja ya integrada en flex.
Cree la interfaz de usuario utilizando HTML y comuníquese mediante JavaScript con un objeto oculto flexible (o flash).
Por ejemplo, pase la cadena que desee mostrar en flex textarea como parámetro en una llamada ExternalInterface. Luego, muestre esa cadena en una etiqueta regular <textarea>
html.
Esta estrategia ha funcionado bien para mis proyectos