Создаем себе праздничное настроение. Снегопад во Флэше.
Зима. Скоро новый год. В моем городе снега уже достаточно. Но есть такие экземпляры городов, где функция Zima(); вызывается с аргументом snow=false :) Или, возможно, вы хотите, чтобы снег был не только на улице но и во Flash'e. Всё это исполнимо. Приступаем к исполнению...
Сначала сделаем простой снегопад, где снег будет падать вертикально, безо всяких кружений.
Открываем Флэш, устанавливаем размеры сцены, фон и FPS (я ставил 25).
Рисуем снежинку. Особо мудрить не стоит, так как их будет много и за их индивидуальностью никто следить не будет. Я просто взял кисть и поставил ей точку - снежинка готова. Выделяем снежинку, тыцкаем F8, выбираем MovieClip. В панели свойств напишите её имя "sn", без кавычек. Всё, теперь приступаем к скрипту.
Это пишем в действиях муви-клипа снежинки:
Это всё. Теперь можете нажать CTRL-Enter и посмотреть как одна снежинка носится по экрану. Для снегопада нам понадобится чуть побольше снежинок чем одна. Конечно, можно их прямо сейчас скопировать и разбросать по эрану, но профессионалы так не делают :) Открываем Панель действий кадра. Пишем это:
Вот и всё. Теперь, нажав CTRL-Enter, можете наслаждаться полноценным снегопадом. Но и это не предел :) Просто наблюдать за снегом может быстро надоесть. Поэтому добавим долю интерактивности, чтобы пользователь мог поучаствовать. Сделаем, чтобы при движении мышкой влево снег "сдувало" влево, при движении вправо - "сдувало" вправо. Пишем здесь же, в действиях кадра.
Теперь вы можете уже в третий раз нажать CTRL-Enter. Получился довольно симпатичный снегопад. А если у вас по какой-то причине снегопада не получилось, то вот исходник. Счастливого Вам Нового Года!
Достоинства.
1. 510 байт! (в моем варианте)
2. Несильно грузит проц. При 100 снежинках загрузка была где-то 20-30%
Недостатки.
1. Снежинкам не хватает кружения и покачивания. Хотя в такой "толпе" это не так и заметно и необходимо.
Когда я искал скрипт снегопада, то нашел только два. Один с классами, автор George Forest, и другой на rastyle.com. Всё, найденное на других сайтах, было копиями этих двух примеров (см. предыдущий пост :)
Если кто-то видел другие хорошие примеры снегопада, киньте линк, посмотрю.
Сначала сделаем простой снегопад, где снег будет падать вертикально, безо всяких кружений.
Открываем Флэш, устанавливаем размеры сцены, фон и FPS (я ставил 25).
Рисуем снежинку. Особо мудрить не стоит, так как их будет много и за их индивидуальностью никто следить не будет. Я просто взял кисть и поставил ей точку - снежинка готова. Выделяем снежинку, тыцкаем F8, выбираем MovieClip. В панели свойств напишите её имя "sn", без кавычек. Всё, теперь приступаем к скрипту.
Это пишем в действиях муви-клипа снежинки:
onClipEvent(enterFrame){
//снежинка падает. random здесь стоит, чтобы
//снежинки обгоняли друг друга и каждая летела со
//своей скоростью. +3 после random'a для того, чтобы
//при значении 0 снежинка продвигалась хотя-бы на 3 пикселя,
//а то матрица какая-то получится...
this._y += random(6)+3;
//если снежинка улетела за нижний край экрана, возвращаем наверх.
//пусть снова падает :) И поменяем _x - чтобы снегопад менялся.
if(this._y > 400){
this._y = -5;
this._x = random(400);
}
//эти строчки пригодятся если вы будете делать "сдувание" снежинок:
if(this._x > 400){ this._x = 1}
if(this._x < 0){ this._x = 400}
}
Это всё. Теперь можете нажать CTRL-Enter и посмотреть как одна снежинка носится по экрану. Для снегопада нам понадобится чуть побольше снежинок чем одна. Конечно, можно их прямо сейчас скопировать и разбросать по эрану, но профессионалы так не делают :) Открываем Панель действий кадра. Пишем это:
i = 1 // переменная-счетчик. ставим начальное значение 1.
ii = 100 // кол-во снежинок. 100 - хватит.
while(i < ii){
//дублируем одинокую снежинку
_root.sn.duplicateMovieClip("sn"+i, i);
//задаем для новой снежинки координаты:
_root["sn"+i]._y = random(400);
_root["sn"+i]._x = random(400);
// и размер:
scale = random(50)+50
_root["sn"+i]._xscale = scale;
_root["sn"+i]._yscale = scale;
i++
}
Вот и всё. Теперь, нажав CTRL-Enter, можете наслаждаться полноценным снегопадом. Но и это не предел :) Просто наблюдать за снегом может быстро надоесть. Поэтому добавим долю интерактивности, чтобы пользователь мог поучаствовать. Сделаем, чтобы при движении мышкой влево снег "сдувало" влево, при движении вправо - "сдувало" вправо. Пишем здесь же, в действиях кадра.
// по движению мыши происходят такие события:
_root.onMouseMove = function(){
si = 1 // еще одна переменная-счетчик для еще одного цикла.
// с интервалом в 100 миллисекунд узнаем координату мыши и обзываем её oldm:
setInterval(function(){_root.oldm = _xmouse}, 100);
while(si < ii){
// если oldm < текущей координаты "сдуваем" снежинки вправо (опять random :)
if(_root.oldm < _xmouse){_root["sn"+si]._x+= random(3)}
// аналогично, только край экрана - левый и сдуваем в другую сторону:
else if(_root.oldm > _xmouse){_root["sn"+si]._x-=random(3)}
si++
}
}
Теперь вы можете уже в третий раз нажать CTRL-Enter. Получился довольно симпатичный снегопад. А если у вас по какой-то причине снегопада не получилось, то вот исходник. Счастливого Вам Нового Года!
Достоинства.
1. 510 байт! (в моем варианте)
2. Несильно грузит проц. При 100 снежинках загрузка была где-то 20-30%
Недостатки.
1. Снежинкам не хватает кружения и покачивания. Хотя в такой "толпе" это не так и заметно и необходимо.
Когда я искал скрипт снегопада, то нашел только два. Один с классами, автор George Forest, и другой на rastyle.com. Всё, найденное на других сайтах, было копиями этих двух примеров (см. предыдущий пост :)
Если кто-то видел другие хорошие примеры снегопада, киньте линк, посмотрю.

7 Comments:
At 4:03 AM,
Nirth said…
боюсь показаться банальным. но всеже может имеет смысл отказаться от onClipEvent =)&
At 12:30 AM,
Bright said…
извиняюсь.
просто так написал, мона было в цикле писать
this["sn"+i].onEnterFrame=function(){
//код
}
и где нибудь тоже самое написать для sn.
дело вкуса :)
At 1:23 AM,
Майкл Клишин said…
За onClipEvent надо отрывать руки. Научи так работать дизайнеров вокруг -- и потратишь еще полчаса на то, чтобы найти все их неработающие навески и собрать воедино. За onClipEvent надо отрывать руки.
At 1:35 AM,
Bright said…
ну я ж сказал, кому не нравится мона было переписать.
просто с онклипивентом кода меньше т.к. дубликаты мувика получаются с тем же кодом, иначе бы надо писать код для исходного + для дубликатов.
хотя может это и не такой сильный аргумент :)
At 2:31 AM,
Anonymous said…
я в свое время делал снег, летящий по окружности(эллипсу) с немного разным для каждой снежинок центром. получалось неплохо. и при входе в кадр уменьшал на небольшую случайную величину прозрачность и тут же увеличивал прозрачность на так же небольшую случайную велечину. получалось как легкое мерцание(если не присматриваться). вот собственно...
да, в первый раз здесь, отличный сайт.
At 2:32 AM,
Anonymous said…
забыл, извините, цент окружности был за пределами, конечно, экрана и радус был приличный,но разный для всех.
At 10:46 PM,
Anonymous said…
Законно по юридическому договору оформим на частных лиц и сотрудников предприятий карты метро в сеть супермаркетов МETRO Cash & Cаrry:карточка metro с вашим фото(делается при вас в самом магазине METRO Cash & Carry) ,с личным номером,кодом,со специальной магнитной полосой, названием организации, от которой вы будете нами зарегистрированы и оформлены. Вы можете проводить с собой двух человек. Карточки metro оформляются: на граждан России и иностранных граждан.Оформление делается без предварительной оплаты, то есть вначале мы регистрируем вас,вы получаете карточки метро, потом оплачиваете. Оплата производится в течение одного рабочего дня после оформления через Сбербанк РФ ,торговые центры МETRO Cash and Cаrry работают круглосуточно.Срок действия карточки metro 3 года, по истечении этого срока договор перезаключается по взаимному согласию сторон.Для оказания этой услуги мы находим фирмы, у которых есть свободные места в этих гипермаркетах,и заключаем с ними соответствующие договора, по которым фирмы обязуются предоставить вам право пользоваться их местами в этих супермаркетах сроком на три года. Оформление и регистрация производятся в разных немецких гипермаркетах Метро Кэш энд Керри, по выбору юридических лиц в соответствии с их территориальным месторасположением. Получив карты метро в одном из немецких гипермаркетов Метро Кеш энд Керри вы можете ей пользоваться в любых других магазинах этой сети супермаркетов Метро Кеш энд Керри в России и за границей.
[url=http://www.c-c-metro.ru/38-1.php ] КАК ОФОРМИТЬ КАРТУ КЛИЕНТА МЕТРО КЭШ ЭНД КЕРРИ ! Утюги ![/url]
[url=http://www.c-c-metro.ru/23-2.php ] как достать карту магазина метро ! молотки долото ![/url]
Post a Comment
<< Home