Речь пойдёт о небольшой библиотеке классов на AS 3.0 под говорящим названием SnowStorm (автор - некто Greg Tczap), которая позволяет быстро и без проблем создать довольно реалистичный эффект снегопада. Хотя, если быть точным, готовый эффект больше напоминает снежную метель, вьюгу, чем снегопад (кстати, про создание реалистичного эффекта снегопада я уже писал - Реалистичный эффект падающего снега на ActionScript 3.0. Продолжение.).
Несомненным достоинством библиотеки SnowStorm (на мой, конечно, взгляд) является то, что вся графика генерируется кодом. А это значит, что мы без лишних приготовлений можем сразу перейти к написанию кода.
Первым делом, создадим на экране Flash Player-а лютую зимнюю пургу :-)
Код ActionScript 3.0:
/*
импорт классов
*/
import com.tczap.fx.snowstorm.SnowStorm;
/*
создаём метель
*/
var snowStorm:SnowStorm = new SnowStorm();
/*
задаём ширину и высоту той области, в которой мы хотим видеть эффект снежной бури
*/
snowStorm.width = 400;
snowStorm.height = 400;
/*
указываем количество снежинок (в моём случае - 300 штук) и скорость их появления в миллисекундах
*/
snowStorm.createSnow(300,1000);
/*
добавляем эффект в список отображения
*/
addChild(snowStorm);
Результат:
Существует возможность настроить цвет и диаметр снежинок.
Код ActionScript 3.0:
/*
импорт классов
*/
import com.tczap.fx.snowstorm.SnowStorm;
/*
создаём метель
*/
var snowStorm:SnowStorm = new SnowStorm();
/*
задаём ширину и высоту той области, в которой мы хотим видеть эффект снежной бури
*/
snowStorm.width = 400;
snowStorm.height = 400;
/*
задаём цвет и диаметр снежинок
*/
snowStorm.snowColor = 0xff0000;
snowStorm.snowDiameter = 10;
/*
указываем количество снежинок (в моём случае - 300 штук) и скорость их появления в миллисекундах
*/
snowStorm.createSnow(300,1000);
/*
добавляем эффект в список отображения
*/
addChild(snowStorm);
Получим кровавый снегопад с довольно крупными хлопьями снега (в 10 px):
Ещё более интересные результат можно получить, если поиграть со свойством snowSpeedMultiplier, которое влияет на скорость падающих снежинок:
Код ActionScript 3.0:
/*
импорт классов
*/
import com.tczap.fx.snowstorm.SnowStorm;
/*
создаём метель
*/
var snowStorm:SnowStorm = new SnowStorm();
/*
задаём ширину и высоту той области, в которой мы хотим видеть эффект снежной бури
*/
snowStorm.width = 400;
snowStorm.height = 400;
/*
задаём цвет и диаметр снежинок
*/
snowStorm.snowColor = 0xffffff;
snowStorm.snowDiameter = 10;
/*
подстраиваем скорость пурги под свой вкус
*/
snowStorm.snowSpeedMultiplier = 20;
/*
указываем количество снежинок (в моём случае - 300 штук) и скорость их появления в миллисекундах
*/
snowStorm.createSnow(300,1000);
/*
добавляем эффект в список отображения
*/
addChild(snowStorm);
Результат:
А с помощью метода destroySnow() можно регулировать интенсивность снегопада. Метод принимает такие же параметры, как и ранее рассмотренный метод createSnow(), но только метод destroySnow() удаляет, а не добавляет снежинки. Причём удаление осуществляется не одномоментно, а очень плавно и постепенно. Смотрите сами...
Код ActionScript 3.0:
/*
импорт классов
*/
import com.tczap.fx.snowstorm.SnowStorm;
import fl.controls.Slider;
import fl.events.SliderEvent;
/*
количество снежинок
*/
var snowflakes:uint = 300;
/*
создаём метель
*/
var snowStorm:SnowStorm = new SnowStorm();
/*
задаём ширину и высоту той области, в которой мы хотим видеть эффект снежной бури
*/
snowStorm.width = 400;
snowStorm.height = 400;
/*
задаём цвет и диаметр снежинок
*/
//snowStorm.snowColor = 0xffffff;
//snowStorm.snowDiameter = 10;
/*
подстраиваем скорость пурги под свой вкус
*/
//snowStorm.snowSpeedMultiplier = 20;
/*
указываем количество снежинок (в моём случае - 300 штук) и скорость их появления в миллисекундах
*/
snowStorm.createSnow(snowflakes,1000);
/*
добавляем эффект в список отображения
*/
addChild(snowStorm);
/*
слайдер
*/
var slider:Slider = new Slider();
addChild(slider);
slider.width = 300;
slider.snapInterval = 10;
slider.tickInterval = 10;
slider.maximum = snowflakes;
slider.value = snowflakes;
slider.move(50, 20);
slider.addEventListener(SliderEvent.CHANGE, changeSlider);
function changeSlider(event:SliderEvent):void
{
snowStorm.destroySnow(event.value, 1000);
}
Результат:
Перетаскиваем бегунок слайдера и наблюдаем, как снегопад усиливается или ослабевает.
Скачать библиотеку классов SnowStorm и исходники к данному уроку можно по следующей ссылке - скачать (под Adobe Flash CS5).