Flash: Usando eventos de roda do mouse no modo de tela inteira (Windows e Mac)

9

Embora o Flash tenha um evento de roda do mouse ( MouseEvent.MOUSE_WHEEL ), vem com alguns problemas.

A primeira é que o evento ainda não é suportado no Mac. Portanto, existem várias soluções , todos os quais (basicamente) capturam o evento mousewheel (ou DOMMouseScroll) em javascript e o passam para o aplicativo flash. Felizmente, em todos os navegadores Mac que testei, isso também funciona quando o flash está no modo de tela cheia.

O problema 2 é que o flash ignora os eventos de roda do mouse com pequenos "deltas". Por exemplo, o IntelliPoint Mice com" Scroll Suave " causa este problema. Uma solução para isso é o mesmo que a solução para o mac ... ou seja, capturar o evento roda do mouse javascript no navegador e passá-lo para o aplicativo. A questão é que dos navegadores nas janelas que testei (firefox, ie, safari e chrome), eles não parecem capturar esse evento quando o flash está no modo de tela cheia. Alguém sabe por que ou como consertar isso?

Atualmente, tenho uma solução híbrida que sempre recebe eventos do javascript (no modo sem tela cheia ou tela cheia), exceto quando está no modo de tela cheia no Windows (no ponto em que eles são tirados do evento flash mousewheel). Portanto, as únicas vezes em que falha é no modo de tela inteira no Windows com um mouse que possui pequenos deltas. Alguém tem uma solução completa? Ou apenas um melhor?

    
por Amir 15.10.2009 в 02:21
fonte

5 respostas

3

É um problema conhecido no JIRA do adobe. Você precisa esperar para consertá-lo ou usar outro evento em vez de MouseEvent.MOUSE_WHEEL. Ele não está funcionando no Windows porque a implementação do Flash Player é completamente diferente nas janelas do Mac e Linux. Mac e Linux usam o GTK para implementar o plugin Handle. No Windows, ele usa um Win32API Common HWND, que rouba o foco no modo de tela cheia, causando o não despacho de eventos de rolagem no navegador. No Mac e no Linux, o GTK apenas aumenta o tamanho do plug-in para o tamanho da área de trabalho e não faz uma tela cheia real. É um comportamento do GTK dentro desses sistemas. Nada pode ser feito.

    
por emanuelcds 02.07.2010 / 21:32
fonte
0

Sua solução é uma das melhores. Apenas um é melhor - não use a roda do mouse: (

O Adobe deve fazer algo com ele (e com suporte para outros controladores).

    
por Konrad 15.10.2009 / 15:36
fonte
0

MouseEvent.MOUSE_WHEEL parece funcionar bem no mac desde o Gala beta e 10.1 final. Eu posso acionar eventos de roda do mouse usando o mouse e o trackpad mágicos no Safari e no Chrome.

    
por TheDarkIn1978 16.06.2010 / 03:25
fonte
0

O MacMouseWheel do Pixelbreaker me proporcionou uma rolagem em tela cheia com êxito em um mac, mas Eu não uso há algum tempo (no Safari 5, por exemplo).

A desvantagem é que ele captura eventos para toda a página, então você perderá a rolagem para o HTML, mesmo que o elemento flash seja apenas uma pequena caixa na tela.

Mas você basicamente pode alternar entre o que você já criou e o que ele está usando no macmousewheel.js quando você habilitou a tela inteira.

Espero que ajude, boa sorte.

    
por Nilloc 28.06.2010 / 08:20
fonte
0

Você pode tentar usar o MacMouseWheelHandler simples da classe AS3 no link o que faz com que você não tenha que se integrar ao Javascrpt. Ele injeta o Javascript diretamente do Actionscript.

    
por Matt Giger 17.07.2011 / 19:09
fonte