Статьи

Создайте Apple Inspired Flash Preloader

Два раза в месяц мы возвращаемся к любимым постам наших читателей на протяжении всей истории Activetuts +. Этот учебник был впервые опубликован в июле 2009 года.

Предварительные загрузчики должны быть в ваших приложениях Flash. Они сообщают пользователю, что программа запущена, но не могут показать никакого содержимого, пока они не будут достаточно загружены. В этом уроке я помогу вам создать MovieClip для предварительного загрузчика Apple и научу вас отображать некоторую информацию о загрузке. Все это с помощью Flash и ActionScript 3.0.


Давайте посмотрим на конечный результат, к которому мы будем стремиться:


Мы собираемся создать предварительный загрузчик MovieClip, используя инструменты Flash, такие как Rectangle Primitive Tool, и что-то очень важное для правильного выравнивания: параметр «Привязать к объектам». Клип будет перемещаться по временной шкале, и мы будем строить код в двух классах. Первый класс позаботится о предварительном загрузчике, а другой — о классе документов, где мы запустим предварительный загрузчик.


Откройте Flash и создайте новый файл Flash (ActionScript 3).

Установите размер сцены на желаемые размеры и добавьте цвет фона. Я использовал размер 600 x 300 пикселей и добавил серый радиальный градиент (# 666666, # 333333).

«»

Этот предзагрузчик состоит из одной простой формы, которая повторяется 12 раз.

Выберите Rectangle Primitive Tool и установите радиус угла на 15, убедитесь, что заблокировали элемент управления радиусом угла, чтобы каждый угол был одинаково скруглен.

Установите белый цвет и нарисуйте прямоугольник размером 25 x 85 пикселей, не используйте обводку.

Вот и все, это основная форма, которая будет основной частью нашего прелоадера.


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

Дублируйте форму (Cmd + D) и выровняйте ее по центру снизу.

Дублируйте обе фигуры и затем перейдите в «Модификация»> «Трансформировать»> «Повернуть на 90º».

Здесь идет сложная часть, выберите Free Transform Tool и убедитесь, что вы выбрали опцию Snap To Objects (это значок магнита на панели инструментов или вы можете перейти в View> Snapping> Snap to Objects). Начните вращать верхнюю и нижнюю фигуры, вы заметите, что вращение останавливается под каждым определенным углом, мы будем использовать две остановки, чтобы отделить фигуры друг от друга, заканчиваясь примерно так:


Мы изменим альфа-свойство фигур, чтобы получить эффект «следования», который нам нужен. Есть 12 фигур, это немного больше, чем 8, но чтобы избежать использования десятичных дробей, мы установим 9 в 8 кратных, а для последних 3 добавим 10. Это дает нам альфа-значения 8, 16, 24 .. .72, 80, 90, 100. Посмотрите на изображение, чтобы получить идею.


Преобразуйте все фигуры в один мувиклип и назовите его «Preloader». Установите флажок «Экспорт для ActionScript» и напишите «classes.Preloader» в текстовом поле класса. Дважды щелкните клип, чтобы получить доступ к его временной шкале. Процесс анимации очень прост; добавьте новый ключевой кадр и вращайте фигуры, пока 100% -ая альфа-форма не окажется в положении, где была 8% -ая альфа-форма. Повторяйте это, пока не получите полную анимацию. Кадры должны быть в следующем порядке:

Поскольку анимация основана на временной шкале, скорость будет зависеть от количества кадров в секунду вашего фильма, у меня 25 кадров в секунду, и я использовал 2 кадра в каждом состоянии.


Наш предварительный загрузчик имеет размер 300 x 300 пикселей, обычно он не будет таким большим, но хорошо иметь такую ​​возможность. Выберите подходящий размер для вашего прелоадера и расположите его по центру на сцене. Я выбрал 48 х 48 пикселей.


Создайте динамическое текстовое поле и присвойте ему имя экземпляра «info». Это покажет общий килобайт для загрузки, объем загруженного в настоящее время и процент, который он представляет. Напишите текст, чтобы понять, какой размер он будет использовать, и отцентрируйте его.


Создайте новый файл ActionScript и начните импорт необходимых классов:

1
2
3
4
5
6
package classes
{
    import flash.display.MovieClip;
    import flash.text.TextField;
    import flash.events.Event;
    import flash.events.ProgressEvent;

1
2
public class Preloader extends MovieClip
{

Поскольку наш предварительный загрузчик является MovieClip и использует временную шкалу, мы собираемся расширить этот класс с помощью класса MovieClip.


Нам нужно использовать только одну переменную в этом классе. Эта переменная будет хранить имя экземпляра текстового поля, которое мы используем для отображения информации о загрузке.

1
private var dataTextField:TextField;

01
02
03
04
05
06
07
08
09
10
11
public function start(dataTextField:TextField):void
{
    this.dataTextField = dataTextField;
 
    /* The loaderInfo Object is in charge of the loading process, in this code we add
        listeners to check the progress and when the movie is fully loaded */
        
        this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
        this.loaderInfo.addEventListener(Event.COMPLETE, onComplete);
         
}

01
02
03
04
05
06
07
08
09
10
11
12
private function onProgress(e:ProgressEvent):void
{
    /* Here we use some local variables to make better-reading code */
     
    var loadedBytes:int = Math.round(e.target.bytesLoaded / 1024);
    var totalBytes:int = Math.round(e.target.bytesTotal / 1024);
    var percent:int = (e.target.bytesTotal / e.target.bytesLoaded) * 100;
 
    /* Sets the loading data to the textfield */
             
    dataTextField.text = String(loadedBytes + » of » + totalBytes + «KB Loaded\n» + percent + «% Complete»);
}

01
02
03
04
05
06
07
08
09
10
11
private function onComplete(e:Event):void
{
    /* Remove listeners */
 
    this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onProgress);
    this.loaderInfo.removeEventListener(Event.COMPLETE, onComplete);
 
    //Here you can add a function to do something specific, I just used a trace */
     
    trace(«Loaded!»);
}

Создайте новый файл ActionScript и начните писать:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
package classes
{
    import flash.display.MovieClip;
     
    public class Main extends MovieClip
    {
        public function Main():void
        {
            /* Starts the preloader, «preloader» is the instance name of the clip */
 
            preloader.start(info);
        }
    }
}

Этот код будет классом документа, поэтому вернитесь в файл .Fla и добавьте «classes.Main» в текстовое поле класса на панели свойств.


Вы всегда можете изменить цвет прелоадера, чтобы использовать его с разными фонами, простой способ сделать это — изменить значение Tint в свойствах клипа, попробуйте!

Спасибо за чтение, не стесняйтесь оставлять комментарии и вопросы.