Записки о Flash

GlobalMouse

Во времена AS2 мышиные события типа onMouseUp, onMouseDown, onMouseWheel, onMouseMove были глобальными, с приходом AS3 эти события теперь жестко привязаны к InteractiveObject. Не желая с этим мириться, я написал класс GlobalMouse, позволяющий любому объекту получать данные события, а также захватывать скролл мыши от браузера (если скролл мыши не захвачен, а так и происходит в AS3, то можно столкнуться с такой ситуацией, что при прокручивании ComboBox прокручивается ещё и вся страница с флешкой).
Source.

UPDATE: Причесанный класс только для захвата мыши.


16 comments

16 Comments so far

  1. [...] не расположенными на сцене. Посмотрев на класс GlobalMouse Дениса Коляко, я не мог поверить, что всё так сложно. И [...]

  2. miramax May 23rd, 2007 20:24

    Изврат =)
    Но генерации AS1/2 сриптов в рантайме можно поискать более лучшее применение.

  3. __etc May 23rd, 2007 21:36

    Это — одно из них, особенно, когда нужен Mouse из AS2.

  4. Антон May 24th, 2007 22:59

    Пытался, но так и не смог разобраться, в чём главная идея реализации? Буквально в двух словах если можно.

  5. __etc May 25th, 2007 00:58

    Главная идея:
    0. Подписываться на глобальные события мыши, как в AS2, везде и всюду, в любом классе;
    1. Не иметь привязки ни к какому InteractiveObject, необходимости наследования, отрисовки чего-либо;
    2. Захват скролла мыши от браузера (в AS3 скролл продолжает работать в самом браузере).

    Если же вопрос относительно самой реализации, то там просто генерируется ролик с AS2-кодом, загружается в Loader, затем с роликом устанавливается LocalConnection. Ролик высылает соответствующие оповещения через LocalConnection. Для того, чтобы ролик работал сразу в нескольких окнах, при инициализации создается уникальное имя соединения. Как-то так…

  6. Антон May 25th, 2007 03:30

    Да, я за реализацию спрашивал, спасибо.
    Попытаюсь теперь с вашими подсказками врубиться в код :)

  7. o00 July 5th, 2007 22:48

    а зачем там Loader? смотрю как баран на код и не доходит никак… :/

  8. o00 July 5th, 2007 22:54

    Пардон, плохо читал комменты, дошло. :)
    “43575309DC020000789C9590C14…”;
    это и есть загружаемый as2 ролик? а что в нем за код?

  9. __etc July 6th, 2007 01:17

    Ну да, он самыый. А это имеет значение, что там внутри? :)

  10. o00 July 6th, 2007 01:33

    да, крайне интересно

  11. __etc July 6th, 2007 06:15

    Просто создается LocalConnection и передеача событий мыши через него.

  12. [...] и страница. Решение было найдено по этому адресу http://etcs.ru/blog/as3/globalmouse/ а его описание — по этому адресу [...]

  13. Mozilla vs SWF | RIA crumbs October 9th, 2007 14:16

    [...] Более подробно почитать и взять на вооружение этого решения можно здесь. [...]

  14. flastar January 22nd, 2008 18:38

    Самая нужная вещь. Пасиб большое. Очень помогло.

  15. [...] в фокусе или нет. Достаточно давно я опубликовал класс GlobalMouse, он решал данную проблему, но в целом был неудобен [...]

  16. Фирсов Максим June 15th, 2010 07:11

    душевное спасибо.

Leave a reply