28. Cursor Part2. Библиотека FPCursor

Серия статей на тему Собственные курсоры:
  1. Cursor Part1. Как создать собственный курсор
  2. Cursor Part2. Библиотека FPCursor

В предыдущей статье мы разбирали как можно создать курсор с помощью стандартных возможностей и со своей собственной реализацией. Если вы не читали предыдущую статью может возникнуть вопрос зачем нужна собственная реализация, если есть стандартная флешовая. Стандартные курсоры конечно выглядят красиво, но есть одно но – создать можно курсор размером не больше 32x32px. К тому же могут возникнуть сложности с анимированным курсором. В прошлой статье так же приведены примеры того как можно отображать курсор на одном конкретном объекте. Каждый раз слушать события MOUSE_OVER/MOUSE_OUT тоже не очень удобно. Для решения всех выше указанных проблем я написал SWC библиотеку FPCursor. В этой статье разберем подробно все методы этой библиотеки.

Создание нативного курсор

Как и в предыдущей статье рассмотрим способ создания нативного курсора, только в этот раз с помощью библиотеки FPCursor. Основной класс библиотеки, это FPCursorManager, в нем имеются статические методы для создания курсора. Прежде чем начать использовать этот класс для создания курсоров, его необходимо инициализировать методом FPCursorManager.Initialize:

Метод может принимать два необязательных параметра:

  1. defCustomCursor: DisplayObject – дефолтовый произвольный курсор
  2. defNativeCursor: MouseCursorData – дефолтовый нативный курсор

Назначение этих параметров разберем чуть ниже. Инициализировать класс достаточно один раз в приложении. Повторный вызов метода будет игнорирован.

После инициализации необходимо сообщить классу FPCursorManager какие курсоры мы будем использовать в приложении. Используем метод FPCursorManager.CreateNative:

В метод FPCursorManager.CreateNative передаются параметры:

  • cursorData:MouseCursorData – информация о курсоре. Подробную информацию об этом классе можно получить в документации Adobe
  • name:String – имя курсора. Когда далее в коде вы захотите повесить этот курсор на объект, вам надо будет указать это имя.

Курсор создан, и теперь вы можете повесить этот курсор на любой визуальный объект. Делается это с помощью метода FPCursorManager.Register:

Метод принимает два параметра:

  • target: DisplayObject визуальный объект на который мы хотим повесить курсор
  • name:String название курсора. Здесь необходимо передать значение которое мы передавали в методе FPCursorManager.CreateNative. Параметр не обязательный, если не передан – используется дефолтовый курсор который мы задали в методе Initalize

Вот как это выглядит во флешке:

Здесь должна быть флешка. Установите Flash Player


Исходный код этой флешки:

Создание произвольного курсора

Для создания произвольного курсора, любого размера и с анимацией любой сложности, в библиотеке FPCursor есть метод FPCursorManager.CreateCustom. Перед тем как воспользоваться методом FPCursorManager.CreateCustom, менеджер необходимо инициализировать так же как и в предыдущем примере. Метод FPCursorManager.CreateCustom принимает два параметра:

  • cursor: DisplayObject – визуальный объект отображающий курсор
  • name:String – имя курсора. Когда далее в коде вы захотите повесить этот курсор на объект, вам надо будет указать это имя

Курсор создан, далее как и прошлый раз, необходимо зарегистрировать ваш визуальный объект для отображения курсора на нем, используя тот же метод FPCursorManager.Register с теми же параметрами.
Пример произвольного курсора во флешке:

Здесь должна быть флешка. Установите Flash Player


Исходный код этой флешки:

Вспомогательные методы класса FPCursorManager

У этого класса есть два дополнительных метода, для прошения работы с библиотекой:

  • FPCursorManager.RegisterChilds
  • FPCursorManager.CursorDataFromMovieClip

RegisterContainer
Метод RegisterContainer позволяет регистрировать всех создаваемых дочерних элементов. Например у вас есть контейнер cont:Sprite в который вы добавляете игровых персонажей, и хотите что бы курсор был на каждом персонаже. Для этого можно после каждого создания игрока вызывать метод Register, а можно один раз вызвать метод RegisterShilds для контейнера cont и все. Данный метод принимает следующие параметры:

  • target: DisplayObject – Визуальный объект на который мы хотим повесить курсор
  • name:String – Название курсора. Здесь необходимо передать значение которое мы передавали в методе FPCursorManager.Create. Параметр не обязательный, если не передан – используется дефолтовый курсор который мы задали в методе Initalize
  • classLink:Class=null – Если задать этот параметр, то курсоры будут отображаться только на визуальных объектах которые являются экземплярами класса classLink. Не обязательный параметр.

В этой флешке ниже мы сообщили менеджеру курсоров что на всех дочерних объектах класса Item необходимо показать нативный курсор. И после чего создали два объекта класса Item и один обычный Sprite. Курсор отображается только на первых двух объектах:

Здесь должна быть флешка. Установите Flash Player


Исходный код флешки:

CursorDataFromMovieClip
Если у вас есть анимация MovieClip, и вы хотите создать нативный курсор, то метод CursorDataFromMovieClip поможет вам создать объект MouseCursorData. Этот метод преобразовывает объект MovieClip в последовательный набор картинок и передает объекту MouseCursorData. У метода три параметра:

  • movieClip:MovieClip – Собственно анимация для конвертации
  • frameRate:int=12 – Количество кадров в секунду. Влияет на скорость воспроизведения анимации. По умолчанию 12
  • hotPoint: Point – Точка которая указывает на местоположение курсора, по умолчанию 0×0

Вот пример использования этого метода:

Здесь должна быть флешка. Установите Flash Player

Кликните что бы развернуть полный исходный код флешки

Класс FPCursor

Допустим вам необходимо создать анимацию показа и скрытия курсора. Для анимации показа достаточно слушать событие Event.ADDED_TO_STAGE. А как быть с анимацией скрытия, ведь когда курсор скрывается вызывается метод removeChild и визуальный объект тут же скрывается? Для решения этой проблемы есть класс FPCursor. Унаследуйтесь от этого класса и переопределяйте protected методы show и hide. Каждый раз когда будет необходимо показать/скрыть курсор, будут вызваны методы show и hide. Эти методы имеют один параметр target: DisplayObject – это ссылка на визуальный объект, на который навели мышкой.

Обратите внимание что курсор в этом случае не добавляется в список отображения. Вы должны сделать это сами в методе show. Ну и скрыть в методе hide. Класс содержит еще метод updatePosition, в нем передаются координаты которые надо использовать для позиционирования курсора

В методе updatePosition есть две координаты:

  • local: Point – Локальные координаты объекта, на которое мы навели мышкой
  • global: Point=null – Глобальные координаты, для позиционирования курсора. Параметры может быть равен null если вы не добавили курсор в список отображения в методе show . В этом случае вам необходимо самому рассчитать координаты.

Давайте посмотрим на примере как это может выглядеть:

Здесь должна быть флешка. Установите Flash Player

Кликните что бы показать полный исходный код этой флешки

Если у вас нет возможности наследоваться от класса FPCursorSimple или вы не хотите этого делать по идеологическим причинам, воспользуйтесь интерфейсом IFPCurosrCustom. Он реализует методы:

  • function Show(target: DisplayObject):void
  • function Hide(target: DisplayObject):void
  • function UpdatePosition(local: Point, global: Point=null):void

Скачать исходники можно здесь.
Библиотека FPCursor лежит здесь.

Да прeбудет с вами Flash.
Serious Sam
Эту статью прочитали 959 раз

Возникли вопросы по статье? Не стесняйтесь спрашивать в комментариях или любым другим способом на странице Контакты .

Присоединяйтесь к нам в социальных сетях: ВКонтакте , Twitter и Facebook
Понравилась статья? Буду благодарен если вы поделитесь ссылкой с друзьями:


Комментарии ВКонтакте:




Комментарии Facebook:




Комментарии WordPress: