On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru








 

Как сделать прелоадер в виде круговой диаграммы

Автор: © lexxx

В этом уроке я покажу как создать такой прелоадер, который во первых: отличался бы от других, а во вторых: был бы универсален и годился для повторного использования в разных клипах. Плюс ко всему некоторые маленькие хитрости и ActionScript. Конечный результат будет выглядеть следующим образом:

Процент загрузки показан круговой диаграммой и числом в ее центре. Черный сектор - сколько загружено, белый - сколько осталось.
НУ И ЧТО ЗДЕСЬ СЛОЖНОГО:
Да собственно говоря ничего. Прелоадеров было создано столько, что и не пересчитать. Вот и еще один: Но это во первых всего лишь урок, а во вторых, здесь есть маленькая хитрость. Как узнать процент загрузки клипа знают наверно все: благодаря методам MoviecClip.getBytesLoaded() и MoviecClip.getBytesTotal(). Первый метод возвращает число загруженных байт клипа, второй - общий размер клипа в байтах. Разделив первое на второе получим процент загрузки. А вот как показать этот процент в виде круговой диаграммы? Об это дальше.
РИСУЕМ ДИАГРАММУ
Пускай наша диаграмма будет черного цвета диаметром 150 пикселей. Создадим новый клип в библиотеке символов, назовем его Sector, нарисуем в нем черную окружность диаметром 150 пикселей, выровняем ее по центру, разделим пополам, получим черный сектор.

Сектор еще не диаграмма, создаем новый символ под названием Gauge, делаем в нем два слоя. Верхний слой называем Mask, и подручными средствами рисуем на нем дугу, которая служит левой половиной круга диаграммы, на нижний слой помещаем символ Sector.

Потом слой Mask делаем маской, а слой Sector - маскируемым. Продлеваем этих два слоя на 50 фреймов, ставим на слое Sector на 51-м фрейме ключевой фрейм. В первом фрейме этого же слоя задаем Motion Tweening таким образом, чтобы символ Sector совершил половину оборота против часовой стрелки. Теперь если посмотреть на символ Gauge в движении видно, как постепенно сектор поворачиваясь попадает под маску и становиться видимым все больше и больше.
Добавляем еще два слоя с названиями Mask и Sector аналогичных предыдущим двум, но с первым ключевым фреймом в позиции 51, а последним - 101 и зеркальным отражением сектора и маски относительно первых двух. Так же Теперь при движении от первого фрейма к сто первому сектор прочертит диаграмму полностью.

ЭТО ЕЩЕ НЕ ПРЕЛОАДЕР
Да, но половина работы уже сделана. Теперь сделаем сам прелоадер. Создадим символ, и назовем его Preloader. В нем создадим три слоя с названиями Actions, Label и Gauge, каждый по три фрейма. На слой Gauge поместим символ Gauge и отцентруем его. На палитре "Instance" зададим ему имя gauge. На слой Label добавим текстовое поле такой ширины, чтобы в него вписалось три цифры. Именно здесь будет показан процент загрузки. На палитре "Text Options" укажем, что это динамический текст и ему соответствует переменная label. Так же необходимо указать, какие именно символы из того шрифта, что используется этим текстовым полем будут внедрены в клип. В нашем случае это цифры.
Теперь само важное - "оживим" прелоадер. Поработаем со слоем Actions. Во все три фрейма этого слоя впишем скрипты.
Для первого фрейма:
_root.stop ();
var percents = 0.0;
Для второго фрейма:
if (_root.getBytesLoaded () == _root.getBytesTotal ()) {
percents = percents + 5.0;
if (percents > 100.0) {
percents = 100.0;
}
} else {
percents = Math.floor (_root.getBytesLoaded () / _root.getBytesTotal () * 100.0);
}
gauge.gotoAndStop (percents + 1);
label = percents;
Для третьего фрейма:
if (percents < 100.0) {
gotoAndPlay (2);
} else {
_visible = false;
_root.play ();
stop ();
}
Первый скрипт остановит весь клип, в котором находится прелоадер (_root).
Второй скрипт определит процент загрузки. Обратите внимание на строку gauge.gotoAndStop (percents + 1) -здесь находится хитрость. Для того, чтобы диаграмма показала нужный процент, ее надо перевести на соответствующий фрейм.
В случае, если загрузка завершилась, третий скрипт спрячет прелоадер и запустит основной клип (_root). В противном случае прелоадер перейдет ко второму фрейму и повторится предыдущий скрипт.

МОНТИРУЕМ ПРЕЛОАДЕР В КЛИП
Ну вот, прелоадер готов, теперь его надо испытать. Для этого перейдем в главную сцену основного клипа. На любой слой в первый его фрейм поместим наш прелоадер. На любой другой слой где ни будь не в первый фрейм (обязательно после прелоадера) поместим что ни будь увесистое, килобайт на сто. Испытаем клип - нажмем Ctrl-Enter. В меню Debug укажите скорость загрузки, и нажмите Ctrl-Enter еще раз. Теперь мы увидим прелоадер в действии.
Если надо будет использовать прелоадер в другом клипе, откройте клип с этим уроком как библиотеку и просто перетащите прелоадер из библиотеки в нужный клип на чистый слой в первый фрейм.










Литература по FLASH