28 января 2011 г.

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

Привет всем. Сегодня я расскажу о способах создания собственного курсора во Flash средствами ActionScript 3.


Рассмотрим, для начала простейший способ.

Нарисуем какой-нибудь курсор и преобразуем его в символ. Имя  — cursor.



Добавим его на сцену и  слоем выше напишем следующий код.

cursor.startDrag();

Запустим. Вроде все нормально, однако нарисованный курсор  не всегда находится под реальным курсором.

Поэтому добавим параметр true.

cursor.startDrag(true);

Итак, хороший результат.
Осталось лишь убрать реальный курсор.

Mouse.hide();

[swfobj src="http://cyber-page.ru/wp-content/uploads/2011/01/2.swf"]

Способ второй. Функция startDrag() удобна, однако можно обойтись и без нее с помощью простого события enterFrame.

stage.addEventListener(Event.ENTER_FRAME, dragF);
function dragF(e:Event):void {
cursor.x=mouseX;
cursor.y=mouseY;
}


Код немного больше, но работает также. Если вы забыли про функцию startDrag(), то  можно выкрутиться таким образом.

Хорошо, а теперь, предположим, мы  не хотим засорять сцену и библиотеку лишними объектами. Плюс к этому курсор и вообще, растровые изображения могут значительно увеличить размер SWF-приложения. В маленьких играх это конечно не заметно, однако при больших масштабах за размером следует следить.

Рассмотрим специальный класс Loader.

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


Затем создадим переменную, которая будет служить загрузчиком внешних данных. Вообще, класс Loader служит для загрузки внешних SWF данных, и изображений различного формата.

var cursor:Loader = new Loader();

Мы создали переменную, теперь назначим ей путь для подгрузки:

cursor.load(new URLRequest("cursor.gif"));

Где cursor.gif — это наш курсор в папке с проектом.
С помощью метода load и его параметра URLRequest, мы загрузили файл из корневой папки. Также можно указывать полный путь к файлу, а также к файлам из Интернета.

Добавляем загруженный файл на сцену.

addChild(cursor);

[swfobj src="http://cyber-page.ru/wp-content/uploads/2011/01/31.swf"]

Отлично, все загрузилось. Осталось привязать это изображение к курсору.

Mouse.hide(); // Убираем стандартный курсор



stage.addEventListener(Event.ENTER_FRAME, dragF);
function dragF(e:Event):void {
cursor.x=mouseX;
cursor.y=mouseY;
}


И с помощью события привязываем курсор к движениям мышки.

[swfobj src="http://cyber-page.ru/wp-content/uploads/2011/01/41.swf"]

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

1 коммент.:

Vislouh комментирует...

но при добавлении обьектов на сцену, этот курсор непременно скроется за ними. я бы добавил строчку
cursor.mouseEnabled = false;
теперь работает)

Отправить комментарий