Показаны сообщения с ярлыком волны. Показать все сообщения
Показаны сообщения с ярлыком волны. Показать все сообщения

воскресенье, 14 октября 2007 г.

Урок по созданию реалистичных волн во флэше

Урок по Флэш

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


РЕАЛИСТИЧНЫЕ ВОЛНЫ (ПРИВЬЮ) ТУТ!


Начнём с того, что найдём картинку с закатом, типа этой:




Сохраним её как sky.jpg

После чего, октрываем её в фотошопе, идём в Edit – Transform > Flip vertical. Сохраняем перевёрнутую картинку как “water”




Размер каждой из наших картинок - 406x172 px,.

Теперь, открываем программу Флэш (Flash) и создаём новый документ размером 400x330 px.




Нажимаем Ctrl+R (импорт), и импортируем картинку sky.jpg. Помещаем её в верхнюю часть нашего документа, и убедившись что картинка выделена - нажимаем F8, превращаем её в movie clip, и называем sky_mc. Это обязательно!




Создаём новый слой, нажимаем снова Ctrl+R, импортируем картинку water.jpg, помещаем её под картинкой “sky”, точно так же, нажатием F8 переводим картинку в movie clip, и называем её water_mc. Слой помещаем под слой с небом.




Создаём новый слой, и за пределами документа рисуем прямоугольник, закрашиваем его градиентом от белого к чёрному. Убедимся что он выделен, и производим ту же процедуру F8, переводим картинку в movie clip, и называем её gradient_mc.




Теперь, кликая на каждую картинку - проверяйте их названия в этой строке:





После чего, создаём новый слой, нажимаем F9, и в появившемся окошке вставляем этот скрипт.



var w = water_mc._width;
trace(w);
var h = water_mc._height;
ripple = new flash.display.BitmapData(w, h);
ripple3 = new flash.display.BitmapData(w, h / 2);
ripple2 = new flash.display.BitmapData(w, h / 4);
ripple1 = new flash.display.BitmapData(w, h / 4);
gradient = new flash.display.BitmapData(ripple.width, ripple.height);
gradient.draw(gradient_mc, new flash.geom.Matrix(1, 0, 0, 1, 0, 0));
gradient_mc._visible = false;
offset3 = new flash.geom.Point(0, 0);
offset2 = new flash.geom.Point(0, 0);
offset1 = new flash.geom.Point(0, 0);
speed1 = -0.300000;
speed2 = -0.600000;
speed3 = -1.200000;
pt = new flash.geom.Point(0, 0);
rect = new flash.geom.Rectangle(0, 0, ripple.width, ripple.height);
this.onEnterFrame = function ()
{
offset1.y = offset1.y + speed1;
offset2.y = offset2.y + speed2;
offset3.y = offset3.y + speed3;
ripple3.perlinNoise(0, 15, 1, seed, true, true, 1, true, [offset3]);
ripple2.perlinNoise(0, 10, 1, seed, true, true, 1, true, [offset2]);
ripple1.perlinNoise(0, 5, 1, seed, true, true, 1, true, [offset1]);
ripple.copyPixels(ripple1, r1rect, r1pt);
ripple.copyPixels(ripple2, r2rect, r2pt);
ripple.copyPixels(ripple3, r3rect, r3pt);
ripple.merge(gradient, rect, pt2, 127, 127, 127);
dMap = new flash.filters.DisplacementMapFilter(ripple, pt, null, 1, 100, 100, "WRAP");
water_mc.filters = [dMap];
};
r1rect = new flash.geom.Rectangle(0, 0, ripple1.width, ripple1.height);
r2rect = new flash.geom.Rectangle(0, 0, ripple2.width, ripple2.height);
r3rect = new flash.geom.Rectangle(0, 0, ripple3.width, ripple3.height);
r1pt = new flash.geom.Point(0, 0);
r2pt = new flash.geom.Point(0, ripple1.height);
r3pt = new flash.geom.Point(0, ripple1.height + ripple2.height);

Вот и всё!!!

РЕАЛИСТИЧНЫЕ ВОЛНЫ (ПРИВЬЮ) ТУТ!

Исходник в виде файла формата*.fla можно скачать тут.


Copyright © http://megatutorials.blogspot.com

AddThis Social Bookmark Button