Как заставить flex использовать только события прокрутки мыши и клавиатуры, когда это полезно, и в противном случае передать его в браузер? - PullRequest
3 голосов
/ 05 февраля 2011

Это меня долго раздражало.Когда я использую колесо прокрутки мыши для прокрутки вверх и вниз по веб-странице, и на пути курсора появляется флэш-фильм, колесо прокрутки перестает работать.Кроме того, когда флэш-фильм имеет фокус, вы не можете использовать ярлыки браузера, такие как Ctrl + L или Ctrl + R .

Я сейчас пишу гибкое приложение, и я хотел бы найти решение, чтобы, по крайней мере, мои пользователи не страдали от этой несогласованности поведения пользовательского интерфейса.

Я долженЯ думаю, что есть способ заставить flash распространять такие события, как колесо прокрутки мыши и ввод с клавиатуры, обратно в браузер, если они не встречаются в элементе, для которого они полезны, как, например, в текстовой области flex.Хотя я не могу найти никаких решений, и даже никто не говорит об этом.

В частности, как я могу сделать так, чтобы:

  • Когда пользователь прокручивает с помощьюмышь, браузер прокручивает, если мышь не находится над гибким контейнером с полосой прокрутки, или другой компонент, который хочет прокручивать.
  • Когда пользователь нажимает кнопку или комбинацию кнопок на клавиатуре, она будет распространена набраузер, если нет активного слушателя клавиатуры, или курсор находится в текстовом поле и т. д.

Ответы [ 3 ]

3 голосов
/ 06 февраля 2011

Я столкнулся с той же проблемой.Но решение, которое я выбрал, требует значительных изменений, если у вас уже есть сложный пользовательский интерфейс, встроенный в flex.

Создайте пользовательский интерфейс с использованием HTML и общайтесь через javascript со скрытым объектом flex (или flash).

Например, передайте любую строку, которую хотите отобразить в flex textarea, в качестве параметра в вызове ExternalInterface.Затем покажите эту строку в обычном <textarea> HTML-теге.

Эта стратегия хорошо сработала для моих проектов

3 голосов
/ 05 февраля 2011

Связь между браузером и флеш-памятью осуществляется через ExternalInterface. ExternalInterface позволяет вам вызывать методы ActionScript из JavaScript и наоборот.

Удачи в этом, потому что опыт показывает, что часто бывает сложно справиться с сочетаниями клавиш и непостоянством браузера

0 голосов
/ 06 февраля 2011

Добавьте событие, которое будет обрабатываться, если вы находитесь во вспышке, когда находитесь внутри вызова флэш-памяти. Внешний интерфейс для отключения прокрутки и получения фокуса для вспышки.

Когда вы выходите из вспышки, вы все еще можетечтобы вызвать событие, все еще вызывать внешний интерфейс, чтобы сфокусироваться на браузере и остановить прокрутку флэш-памяти.

...