Я уже неоднократно обращался к теме пользовательского курсора на ActionScript 3.0. А сегодня решил рассказать об одном из способов простого и удобного оформления курсора в флеш-роликах. Итак, поговорим о классе ASWCCursor от Jean Andr? Mas.
Что делает класс ASWCCursor?
Класс ASWCCursor позволяет быстро и просто изменять внешний вид курсора в флеш-приложении. Доступно несколько (а, точнее, девять) курсоров:
- POINTER
- R_LEFT
- R_RIGHT
- DRAG
- BUSY
- R_SIDE
- R_TOP
- LINK
- HELP
Напомню, что стандартных курсоров в Flash Player всего пять (подробнее об этом смотрите в посте про управление внешним видом курсора).
Давайте посмотрим, как данные курсоры выглядят в готовом флеш-ролике. Для этого достаточно просто навести курсор мышки на одну из кнопок расположенного ниже флеш-ролика.
Конечно, вы можете возразить, что в ваших силах создать более красивые и оригинальные курсоры. Но в случае с классом ASWCCursor ставка сделана на удобство и простоту. А вам даже не придётся ничего рисовать - всё динамически отрисовывается кодом. Сам код довольно прост.
Код ActionScript 3.0:
/*
импортируем класс
*/
import ASWCCursor;
/*
скрываем стандартный курсор мышки
*/
Mouse.hide();
/*
создаём пользовательский курсор
*/
var cur:ASWCCursor = new ASWCCursor();
/*
указываем, какой именно вид курсора хотим использовать
в данном случае будет использован курсор POINTER - обычный курсор в виде стрелки
*/
cur.mode = ASWCCursor.POINTER;
/*
а данное свойство отвечает за размеры курсора
*/
cur.sizeFactor = 1;
/*
добавляем курсор в список отображения
*/
addChild(cur);
Вот, в принципе, мы и добавили курсор в наш флеш-ролик. Правда, чтобы данный курсор отслеживал реальное перемещение указателя мышки по сцене флеш-ролика, придётся добавить ещё немного кода. Здесь я не буду подробно объяснять работу остального кода, так как делал это уже в уроке «Пользовательский курсор на ActionScript 3.0». Сейчас я просто допишу необходимый код.
Код ActionScript 3.0:
/*
импортируем класс
*/
import ASWCCursor;
/*
скрываем стандартный курсор мышки
*/
Mouse.hide();
/*
создаём пользовательский курсор
*/
var cur:ASWCCursor = new ASWCCursor();
/*
указываем, какой именно вид курсора хотим использовать
в данном случае будет использован курсор POINTER - обычный курсор в виде стрелки
*/
cur.mode = ASWCCursor.POINTER;
/*
данное свойство отвечает за размеры курсора
*/
cur.sizeFactor = 1;
/*
добавляем курсор в список отображения
*/
addChild(cur);
/*
данный код заставляет пользовательский курсор перемещаться вслед за настоящим указателем мышки
*/
stage.addEventListener(MouseEvent.MOUSE_MOVE,mMove);
function mMove(event:MouseEvent):void
{
var coordX:int = event.stageX;
var coordY:int = event.stageY;
if (coordX >= 0 && coordY >= 0 && coordX <= stage.stageWidth && coordY <= stage.stageHeight)
{
cur.visible = true;
cur.x = coordX;
cur.y = coordY;
event.updateAfterEvent();
}
}
stage.addEventListener(Event.MOUSE_LEAVE, mLeave);
function mLeave(event:Event):void
{
cur.visible = false;
}
В принципе, на данном этапе можно и остановиться - курсор создан и теперь он работает правильно. Но давайте всё же его ещё улучшим. Давайте добавим нашему курсору интерактивности: пусть при наведении курсора на кнопку будет меняться внешний вид курсора. Для этого ещё раз модифицируем наш код.
Код ActionScript 3.0:
/*
импортируем класс
*/
import ASWCCursor;
/*
скрываем стандартный курсор мышки
*/
Mouse.hide();
/*
создаём пользовательский курсор
*/
var cur:ASWCCursor = new ASWCCursor();
/*
указываем, какой именно вид курсора хотим использовать
в данном случае будет использован курсор POINTER - обычный курсор в виде стрелки
*/
cur.mode = ASWCCursor.POINTER;
/*
данное свойство отвечает за размеры курсора
*/
cur.sizeFactor = 1;
/*
добавляем курсор в список отображения
*/
addChild(cur);
/*
данный код заставляет пользовательский курсор перемещаться вслед за настоящим указателем мышки
*/
stage.addEventListener(MouseEvent.MOUSE_MOVE,mMove);
function mMove(event:MouseEvent):void
{
var coordX:int = event.stageX;
var coordY:int = event.stageY;
if (coordX >= 0 && coordY >= 0 && coordX <= stage.stageWidth && coordY <= stage.stageHeight)
{
cur.visible = true;
cur.x = coordX;
cur.y = coordY;
event.updateAfterEvent();
}
}
stage.addEventListener(Event.MOUSE_LEAVE, mLeave);
function mLeave(event:Event):void
{
cur.visible = false;
}
/*
при наведении на кнопку btn курсор мышки меняется на LINK, а если увести курсор с кнопки, то курсор возвращается к первоначальному состоянию
*/
btn.addEventListener(MouseEvent.MOUSE_OVER, btnOver);
function btnOver(event:MouseEvent):void
{
cur.mode = ASWCCursor.LINK;
}
btn.addEventListener(MouseEvent.MOUSE_OUT, btnOut);
function btnOut(event:MouseEvent):void
{
cur.mode = ASWCCursor.POINTER;
}
По моему скромному мнению, получилось неплохо. Если вы такого же мнения, то можете скачать сам класс ASWCCursor и исходник к данному уроку (под Adobe Flash CS5.5) по этой ссылке.