9 Stimmen

Flash: Verwendung von Mausradereignissen im Vollbildmodus (Windows und Mac)

Auch wenn Flash über ein Mausradereignis verfügt (MouseEvent.MOUSE_WHEEL), bringt es ziemlich viele Probleme mit sich.

Das erste Problem ist, dass das Ereignis auf dem Mac noch nicht unterstützt wird. Es gibt also eine Reihe von Lösungen, die alle (im Grunde genommen) das Mausradereignis (oder DOMMouseScroll) in Javascript erfassen und an die Flash-App weiterleiten. Zum Glück funktioniert dies unter allen Mac-Browsern, die ich getestet habe, auch im Vollbildmodus von Flash.

Problem 2 ist, dass Flash Mausradereignisse mit kleinen "Deltas" ignoriert. Zum Beispiel führt Microsofts IntelliPoint-Mäuse mit "Smooth Scroll" zu diesem Problem. Eine Lösung dafür ist dieselbe wie die Lösung für den Mac... d.h. das Erfassen des Javascript-Mausradereignisses im Browser und die Weiterleitung an die App. Das Problem ist, dass die Browser in Windows, die ich getestet habe (Firefox, IE, Safari und Chrome), dieses Ereignis anscheinend nicht erfassen, wenn Flash im Vollbildmodus ist. Weiß jemand, warum oder wie man das beheben kann?

[

Derzeit habe ich eine Hybridlösung, die Ereignisse immer von Javascript annimmt (im nicht-Vollbild- oder Vollbildmodus), außer wenn es im Vollbildmodus auf Windows ist (da werden sie dann vom Flash-Mausradereignis angenommen). Also versagt die Lösung nur im Vollbildmodus auf Windows mit einer Maus, die kleine Deltas hat. Hat jemand eine vollständige Lösung? Oder einfach eine bessere?

](http://google.com/search?q=cache:bugs.adobe.com/jira/browse/FP-1561%3FactionOrder%3Ddesc+site:bugs.adobe.com+adobe+jira+FP-1561&cd=3&hl=en&ct=clnk&gl=us)

3voto

mannysz Punkte 901

Es handelt sich um ein bekanntes Problem bei Adobe's JIRA. Du musst darauf warten, dass sie es beheben, oder ein anderes Ereignis als MouseEvent.MOUSE_WHEEL verwenden. Es funktioniert nicht unter Windows, da die Implementierung des Flash Players in Windows vollständig anders ist als in Mac und Linux. Mac und Linux verwenden GTK zur Implementierung des Plugin-Handles. Auf Windows wird eine Win32API Common HWND verwendet, welche den Fokus im Vollbildmodus übernimmt und somit das Nicht-Dispatchen von Bildlaufereignissen im Browser verursacht. Auf Mac und Linux streckt GTK das Plugin einfach auf die Größe des Desktops, es wird also kein echtes Vollbild erstellt. Es handelt sich um ein GTK-Verhalten innerhalb dieser Systeme. Es kann nichts unternommen werden.

0voto

Konrad Punkte 345

Ihre Lösung ist eine der besten. Nur eine ist besser - nicht das Mausrad verwenden :(

Adobe sollte etwas dagegen tun (und auch die Unterstützung für andere Controller verbessern).

0voto

Chunky Chunk Punkte 15772

MouseEvent.MOUSE_WHEEL scheint auf dem Mac seit der Gala Beta und 10.1 final gut zu funktionieren. Ich kann Mausradevents mit der Magic Mouse und dem Trackpad sowohl in Safari als auch in Chrome auslösen.

0voto

Nilloc Punkte 815

Pixelbreaker's MacMouseWheel hat es mir ermöglicht, erfolgreich im Vollbildmodus auf einem Mac zu scrollen, aber ich habe es schon eine Weile nicht mehr benutzt (zum Beispiel auf Safari 5).

Der Nachteil ist, dass es Ereignisse für die gesamte Seite erfasst, sodass du das Scrollen für das HTML verlierst, selbst wenn das Flash-Element nur eine kleine Box auf dem Bildschirm ist.

Aber im Grunde könntest du zwischen dem, was du bereits erstellt hast, und dem, was er in der macmousewheel.js verwendet, wechseln, wenn du den Vollbildmodus aktiviert hast.

Hoffe, das hilft, viel Glück.

0voto

Matt Giger Punkte 46

Sie könnten versuchen, die einfache AS3-Klasse MacMouseWheelHandler unter http://blog.earthbrowser.com/2009/01/simple-solution-for-mousewheel-events.html zu verwenden, die es Ihnen ermöglicht, ohne Integration mit Javascript auszukommen. Sie fügt das Javascript direkt aus Actionscript ein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X