Flash: Verwenden von Mausrad-Ereignissen im Vollbildmodus (Windows und Mac)

9

Obwohl Flash ein Mausrad-Ereignis hat ( MouseEvent.MOUSE_WHEEL ), ist dies der Fall kommt mit ein paar Problemen.

Das erste ist, dass das Event noch nicht auf dem Mac unterstützt wird. So gibt es eine Reihe von Lösungen , die (im Prinzip) das mouswheel (oder DOMMouseScroll) -Ereignis in Javascript erfassen und in die Flash-App übertragen. Glücklicherweise funktioniert dies unter allen von mir getesteten Mac-Browsern auch, wenn sich der Blitz im Vollbildmodus befindet.

Problem 2 ist, dass Flash Mausrad Ereignisse mit kleinen "Deltas" ignoriert. Zum Beispiel: IntelliPoint Mäuse mit" Smooth Scroll " verursacht dieses Problem. Eine Lösung hierfür ist die gleiche wie die Lösung für den Mac ... d. H. Das JavaScript-Mausrad-Ereignis im Browser erfassen und an die App übergeben. Das Problem ist das der Browser in Windows, die ich getestet habe (Firefox, Safari und Chrome), sie scheinen dieses Ereignis nicht zu erfassen, wenn sich der Blitz im Vollbildmodus befindet. Weiß jemand warum oder wie man das repariert?

Ich habe derzeit eine hybride Lösung, die immer Ereignisse von Javascript (im Vollbild- oder Vollbildmodus) mitnimmt, außer wenn es sich im Vollbildmodus unter Windows befindet (an diesem Punkt werden sie vom Flash Mousewheel-Ereignis übernommen). Das einzige Mal, wenn es fehlschlägt, ist im Vollbildmodus unter Windows mit einer Maus, die kleine Deltas hat. Jeder hat eine vollständige Lösung? Oder nur ein besserer?

    
Amir 15.10.2009, 00:21
quelle

5 Antworten

3

Es ist ein bekanntes Problem auf JIRA von Adobe. Sie müssen warten, um es zu beheben, oder verwenden Sie stattdessen ein anderes Ereignis MouseEvent.MOUSE_WHEEL. Es funktioniert nicht mit Windows, da die Flash Player-Implementierung in Windows von Mac und Linux völlig anders ist. Mac und Linux verwenden GTK, um das Plugin Handle zu implementieren. Unter Windows verwendet es einen Win32API Common HWND, der den Fokus auf den Vollbildmodus stuft, was dazu führt, dass Scroll-Ereignisse im Browser nicht gesendet werden. Auf Mac und Linux, GTK nur die Größe des Plug-Ins in Desktop-Größe zu erweitern, und nicht einen echten Vollbildmodus. Es ist ein GTK-Verhalten innerhalb dieser Systeme. Nichts kann getan werden.

    
emanuelcds 02.07.2010, 19:32
quelle
0

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

Adobe sollte etwas damit machen (und mit Unterstützung für andere Controller).

    
Konrad 15.10.2009 13:36
quelle
0

MouseEvent.MOUSE_WHEEL scheint auf dem Mac seit Gala Beta und 10.1 final zu funktionieren. Ich kann Mausrad-Ereignisse mit der Zaubermaus und dem Trackpad sowohl in Safari als auch in Chrome auslösen.

    
TheDarkIn1978 16.06.2010 01:25
quelle
0

Pixelbreakers MacMouseWheel hat mir erfolgreich Vollbild-Scrollen auf einem Mac, aber Ich habe es schon lange nicht mehr benutzt (zB auf Safari 5).

Der Nachteil ist, dass es Ereignisse für die ganze Seite erfasst, so dass Sie das Scrollen für HTML verlieren, auch wenn das Flash-Element nur eine kleine Box auf dem Bildschirm ist.

Sie können jedoch grundsätzlich zwischen dem, was Sie bereits erstellt haben, und dem, was er in der Datei macmousewheel.js verwendet, wechseln, wenn Sie den Vollbildmodus aktiviert haben.

Hoffe, dass hilft, viel Glück.

    
Nilloc 28.06.2010 06:20
quelle
0

Sie können versuchen, den einfachen MacMouseWheelHandler der Klasse AS3 in Ссылка zu verwenden Das macht es so, dass du dich nicht mit Javascrpt integrieren musst. Es injiziert das Javascript direkt von Actionscript.

    
Matt Giger 17.07.2011 17:09
quelle