Нативный пользовательский курсор во Flash Player был очень давно!

Share Button

Сегодня, после небольшого обсуждения интересного продолжения популярной флеш игры, я увидел странный факт. Амбициозные и весьма сильные разработчики могут не знать о наличии доступных API для их же удобства.

Загрузил игрушку на не слабом ноуте i5 2410M с HD3000 и был удивлен. Между переходами экранов она тормозит. Безбожно заставляет задуматься о целесообразности оставлять графику в векторе. Лучше уж ее косо-криво растрировать, чем  заставлять аудиторию нервничать. Название не сообщаю, чтоб не обидеть друзей-авторов :)

Но поговорить я хотел совершенно о другом. В моменты жутких лагов я заметил, что мой курсор ехал совершенно не туда, куда я его перемещал. Скорее всего там используется установка координат курсора через ENTER_FRAME и все внутриигровые лаги влияют на его поведение. Совершенно по непонятной мне причине, так поступают 9 из 10 разработчиков. Либо они не знали о доступном API для нативной смены курсора, либо забыли. И очень зря. Ну, за редчайшим исключением, когда размеры курсора обязаны быть больше, максимально доступных при нативном использовании.

Представьте, что у Вас пустая сцена с не нативным курсором. Вы вынуждаете флеш плеер перерисовать область, где находится «поддельный» курсор каждый раз, когда вызывается ENTER_FRAME. Это уже идет в разрез с моим убеждением, что надо делать все правильно. Меньше необдуманного кода — больше производительность. Вот мой девиз.

Несколько лет назад, флеш плеер начал понимать пользовательские курсоры, которые работают нативным образом без надобности вешать на них ENTER_FRAME и прочие обработчики. Это появилось начиная с флеш плеера 10.2 !!!

Важное условие — BitmapData не должна превышать 32х32 размеры. Это не много, но согласитесь — вполне достаточно для подавляющего большинства игр.

Отправную точку Вы получили. Дальше с помощью гугла с легкостью найдете, как делать анимированные курсоры.

В качестве быстрого старта можете использовать код и иконку ниже.

Наша BitmapData:
CustomCursor

Базовый код для запуска:

import flash.display.BitmapData;
import flash.ui.MouseCursorData;
import flash.geom.Point;
import flash.ui.Mouse;

var cursorData : Vector.<BitmapData> = Vector.<BitmapData>([new MyCursor()]);
var customCursor : MouseCursorData = new MouseCursorData();

customCursor.data = cursorData;
customCursor.hotSpot = new Point();

var SMILE_CURSOR : String = "smilecursor";
Mouse.registerCursor(SMILE_CURSOR,customCursor);
Mouse.cursor = SMILE_CURSOR;
Share Button

This Post Has Been Viewed 1,343 Times

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

Ваш e-mail не будет опубликован.

Blue Captcha Image Новый проверочный код

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>