2009-10-15 21 views
9

Sebbene Flash abbia un evento rotellina del mouse (MouseEvent.MOUSE_WHEEL), presenta alcuni problemi.Flash: utilizzo degli eventi della rotellina del mouse in modalità schermo intero (Windows e Mac)

Il primo è che l'evento non è ancora supportato su Mac. Quindi ci sono un po 'di solutions, che (in pratica) catturano l'evento della rotellina del mouse (o DOMMouseScroll) in javascript e lo passano nell'app flash. Fortunatamente, sotto tutti i browser Mac che ho provato, questo funziona anche quando il flash è in modalità schermo intero.

Il problema 2 è che il flash ignora gli eventi della rotellina del mouse con piccoli "delta". Ad esempio, Microsoft IntelliPoint Mice with "Smooth Scroll" causa questo problema. Una soluzione a questo è la stessa della soluzione per il mac ... ad esempio, catturare l'evento rotellina del mouse javascript nel browser e passarlo all'app. Il problema è che i browser di Windows che ho provato (firefox, ie, safari e chrome), non sembrano catturare questo evento quando il flash è in modalità a schermo intero. Qualcuno sa perché o come risolverlo?

Attualmente ho una soluzione ibrida che accetta sempre eventi da javascript (in modalità non a schermo intero o a schermo intero), tranne quando è in modalità schermo intero su Windows (a quel punto li prende dall'evento flash mousewheel). Quindi le uniche volte che fallisce è in modalità schermo intero su Windows con un mouse con piccoli delta. Qualcuno ha una soluzione completa? O solo uno migliore?

risposta

3

È un problema noto su JABA di Adobe. Devi aspettare per ripararlo o utilizzare un altro evento invece MouseEvent.MOUSE_WHEEL. Non funziona su Windows perché l'implementazione di Flash Player è completamente diversa in Windows da Mac e Linux. Mac e Linux utilizza GTK per implementare l'handle del plugin. Su Windows utilizza un HWND comune Win32API, che ruba l'attenzione sulla modalità a schermo intero, causando il non invio di eventi di scorrimento sul browser. Su Mac e Linux, GTK allunga semplicemente le dimensioni del plug-in in dimensioni desktop e non esegue una visualizzazione a schermo intero reale. È un comportamento GTK all'interno di questi sistemi. Non può essere fatto nulla.

0

La tua soluzione è una delle migliori. Solo uno è meglio - non utilizzare la rotellina del mouse :(

Adobe dovrebbe fare qualcosa con esso (e con il supporto per altri controller)

0

MouseEvent.MOUSE_WHEEL sembra funzionare bene su Mac dal Gala beta e 10.1. Posso attivare eventi della rotellina del mouse utilizzando il mouse magico e il track pad in Safari e Chrome.

0

Pixelbreaker's MacMouseWheel mi ha dato lo scorrimento completo a pieno schermo su un Mac, ma non l'ho usato da un po '(su Safari 5 per esempio)

Il lato negativo è che cattura gli eventi per l'intera pagina, quindi perdere lo scrolling per l'HTML anche se l'elemento flash è solo una piccola scatola sullo schermo.

Ma si potrebbe passare da un elemento all'altro a quello che è già stato creato e a quello che sta utilizzando in macmousewheel.js quando lo si è abilitato a schermo intero.

Spero che ti aiuti, buona fortuna.

Problemi correlati