Rotator. Класс индикатора загрузки

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

325

Предлагаю простой и универсальный способ решения этой проблемы — класс Rotator.

Первое, что нужно сделать — зайти на сайт preloaders.net, выбрать и настроить любой индикатор. Image type обязательно APNG. После нажатия на Generate под сгенерированной анимацией появятся дополнительные параметры, нужно выбрать Download as sprites и скачать png. Preloaders.net выдаёт странные png файлы огромного веса, которые PNGGauntlet отказывается сжимать. Нужно пересохранить png через фотошоп или любой другой графический редактор, а затем сжать через PNGGauntlet. Таким образом вес png файла уменьшится в несколько раз.

Далее нужно подключить png через embed или загрузить через Loader, создать экземпляр класса Rotator и добавить его в дисплей лист:

Первый параметр конструктора — битмапдата png, о котором говорилось выше, второй — прямоугольник с размерами, указанными при создании индикатора на preloaders.net (Preloader size), x и y прямоугольника нулевые. Также у конструктора есть два необязательных параметра: autoplay:Boolean — стартовать анимацию сразу,  interval:uint — это интервал обновления анимации в миллисекундах, он определяет скорость анимации.

Методы play и pause позволяют запускать и останавливать анимацию соответственно. Когда экземпляр больше не нужен, его нужно очистить через метод dispose.

Судя по тексту, всё это довольно заморочено, но на деле на все эти действия уходит пара минут, если не слишком увлекаться настройкой ротатора на сайте.

ImageAtlas. Класс для работы с картами спрайтов

Суть:

Класс для удобной работы с множеством изображений. Вместо прикрепления большого количества изображений через embed или сборки swc/swf с графикой, используется карта спрайтов(png+xml). Аналог класса TextureAtlas из Starling Framework. Доступ к изображением происходит по имени файла нужного изображения.

Как использовать:

  • Создаём атлас для Startling/Sparrow через TexturePacker. Формат графики — png, Size: Any size(не обязательно), параметры Rotation и Trim mode нужно отключить.
  • Подключаем полученные файлы png и xml через embed или загружем через Loader/URLLoader.
  • Создаём экземпляр класса, в конструктор передаёт битмапдату и xml:

var atlas:ImageAtlas = new ImageAtlas(atlasBitmapData, atlasXML);

  •  Далее можно получать нужный тип данных через соответствующие методы: getBitmapDatagetBitmapgetSpritegetShape. Думаю, имена методов говорят сами за себя. В параметры передаётся имя нужного файла изображения (можно подсмотреть в xml). При вызове любого из этих методов создаётся BitmapData нужного изображения, а затем, в зависимости от вызванного метода возвращается  либо сама битмапдата, либо битмап с этой битмапдатой, либо спрайт с битмапом, либо Shape, в который отрисована битмапдата. В любом случае все битмапдаты кэшируются, то есть при повторном обращении к битмапдате она не создаётся заново, а используется уже созданная, не важно, через какой из перечисленных методов.
  • Когда атлас больше не нужен, его нужно очистить через метод dispose.

Есть у данного класса один явный минус — общая битмапдата атласа всегда находится в памяти, но для проектов под пк в большинстве случаев это не критично.

Для уменьшения веса swf можно пережать png, например через PNGGauntlet.