2009-10-15 21 views
9

Aunque Flash tiene un evento de rueda del mouse (MouseEvent.MOUSE_WHEEL), presenta algunos problemas.Flash: Uso de eventos de rueda del mouse en modo de pantalla completa (Windows y Mac)

La primera es que el evento aún no es compatible con la Mac. Así que hay un montón de solutions, todos los cuales (básicamente) capturan el evento mousewheel (o DOMMouseScroll) en javascript y lo pasan a la aplicación flash. Afortunadamente, en todos los navegadores Mac que probé, esto también funciona cuando el flash está en modo de pantalla completa.

El problema 2 es que el flash ignora los eventos de la rueda del mouse con pequeños "deltas". Por ejemplo, IntelliPoint Mice with "Smooth Scroll" de Microsoft causa este problema. Una solución para esto es la misma que la solución para la Mac ... es decir, capture el evento de la rueda del mouse javascript en el navegador y páselo a la aplicación. El problema es el de los navegadores en Windows que probé (Firefox, es decir, Safari y Chrome), no parecen capturar este evento cuando el flash está en modo de pantalla completa. ¿Alguien sabe por qué o cómo solucionarlo?

Actualmente tengo una solución híbrida que siempre toma eventos de javascript (en modo de pantalla completa o no) excepto cuando está en modo pantalla completa en Windows (en ese punto los saca del evento flash mouseheel). Por lo tanto, las únicas veces que falla es en modo de pantalla completa en Windows con un mouse que tiene pequeños deltas. Alguien tiene una solución completa? ¿O simplemente una mejor?

Respuesta

3

Es un problema conocido en adobe's JIRA. Debes esperarlos para solucionarlo o utilizar otro evento en lugar de MouseEvent.MOUSE_WHEEL. No funciona en Windows porque la implementación de Flash Player es completamente diferente en Windows desde Mac y Linux. Mac y Linux usan GTK para implementar el plugin Handle. En Windows usa un HWND común de Win32API, que roba el foco en el modo de pantalla completa, lo que causa el no envío de eventos de desplazamiento en el navegador. En Mac y Linux, GTK simplemente estira el tamaño del complemento al tamaño del escritorio y no hace una pantalla completa real. Es un comportamiento GTK dentro de estos sistemas. Nada puede hacerse.

0

Su solución es una de las mejores. Sólo uno es mejor - no utilizar la rueda del ratón :(

Adobe debería hacer algo con él (y con soporte para otros controladores)

0

MouseEvent.MOUSE_WHEEL parece funcionar bien en mac desde Gala beta y 10.1. final. i puede desencadenar eventos de rueda del ratón con el ratón y trackpad magia tanto en Safari y Chrome.

0

Pixelbreaker's MacMouseWheel me ha dado el éxito de desplazamiento de pantalla completa en un mac, pero no lo han utilizado desde hace tiempo (en Safari 5 por ejemplo).

El inconveniente es que captura eventos para toda la página, por lo que pierda el desplazamiento del HTML incluso si el elemento flash es solo una pequeña caja en la pantalla.

Pero básicamente puede cambiar entre lo que ya ha construido y lo que está usando en macmousewheel.js cuando ha habilitado la pantalla completa.

Espero que ayude, buena suerte.

Cuestiones relacionadas