Кастомный курсор мыши

Сама по себе тема создания своего курсора мыши довольно избита. Но сводится, как правило, к сокрытию «настоящего» курсора ОС и перемещению клипа в координаты мыши.
Мы побеседуем о другом. Как в AS3 заменить «реальный» курсор ОС.
Начиная с версии Flash 10.2 у класса Mouse появились новые методы registerCursor для регистрации нового курсора и unregisterCursor, как не сложно догадаться, для обратной операции.
А так же свойство supportsNativeCursor, позволяющее проверить поддерживает ли ОС на которой выполняется ролик встроенные курсоры.
Внешний вид собственного курсора определяется классом MouseCursorData имеющий три полезных свойства:
data : Vector.<BitmapData> — вектор битмапдат — «кадров» курсора,
frameRate : Number — частота кадров анимации, да, да она может отличаться от frameRate самого ролика,
hotSpot : Point — активная точка курсора (по умолчанию 0, 0).

Преимущества перед «эмулированным курсором» на лицо:

  • Не нужно следить «а не перекрыл ли его новый добавленный DisplayObject»
  • При изменении масштаба ролика курсор остается не изменным
  • Нет артефактов при выводе мыши за пределы ролика
  • После клика пользователем правой кнопкой мыши не будет эффекта «двойного курсора»
  • ???
  • PROFIT

Ну и немного дегтя в бочку с медом, куда ж без него:

  • Максимальный размер курсора 32×32 пикселя.

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

(Клик для анимации)

Ну а теперь все вышесказанное в коде с комментариями:

И пример:

Добавить комментарий