• Авторизация


Работа по уроку «Создание эффекта Боке». 15-06-2014 02:32 к комментариям - к полной версии - понравилось!



Работа по уроку «Создание эффекта Боке».





Использовала урок Леночки (jzayka) и урок Создание эффекта Боке с demiart

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

code:

import Classes.Lights;
var colors:Array = [0xC58E55, 0xCC9933, 0x704D08, 0xDBBA77, 0xFFFFFF, 0x231708];
var light:Lights = new Lights();
light.init(600, 600, 170, 60, colors, 0.2, 2, 5, "up", 3);
addChildAt(light, 1)



[700x488]


Кроме того необходимо изменить скрипт для класса Lights. Для этого в папке проекта открыть папку Classes и найти там файл AS "Lights". Открыть этот файл в программе Adobe Flash и заменить содержимое на следующий код

code:

package Classes
{
/* Import required classes */

import flash.display.MovieClip;
import flash.filters.BitmapFilter;
import flash.filters.BlurFilter;
import flash.events.Event;

//We need to extend the class so we can use the addChild() method.

public class Lights extends MovieClip
{
/* Vars */

private var lightsNumber:int; //The number of Lights on Stage
private var xSpeed:int; //The horizontal speed the Lights have
private var ySpeed:int; //Vertical Speed
private var lightsDir:String; //Direction the Lights are going, this can be Up, Down, Left or Right
private var areaW:int; //The width of the area where the effect will take place
private var areaH:int; //Height
private var lights:Array = new Array(); //This array will store all the Lights MovieClips so we can use them outside the For where we are going to create them.

/* Main function */

public function init(areaWidth:int, areaHeight:int, numberOfLights:int, lightSize:int, lightColors:Array, minimumScale:Number, hSpeed:int, vSpeed:int, dir:String, quality:int):void
{

/* Set variables */

areaW = areaWidth;
areaH = areaHeight;
lightsNumber = numberOfLights;
lightsDir = dir;

/* Use a for to create the parameter-specified number of lights*/

for (var i:int = 0; i < numberOfLights; i++)
{
/* Create the specified number of lights */

var light:MovieClip = new MovieClip();

/* Set random speed to x and y based on the params*/

xSpeed = Math.floor((Math.random() * (hSpeed - -hSpeed + 1)) + -hSpeed);
ySpeed = Math.round((Math.random() * vSpeed) + 0.5);

light.xSpeed = xSpeed;
light.ySpeed = ySpeed;

/* Create lights */

light.graphics.beginFill(lightColors[Math.floor(Math.random() * lightColors.length)]);
light.graphics.drawCircle(0, 0, lightSize / 2);
light.graphics.endFill();

/* Set a position based on the params specified */

light.x = Math.floor(Math.random() * areaWidth);
light.y = Math.floor(Math.random() * areaHeight);

/* Add blur, we declare the var here to get a new blur w/every light */

var b:int = Math.floor(Math.random() * 10) + 5; //Calculates a random Blur between 0-9 and adds 5 to the result.

var blur:BitmapFilter = new BlurFilter(b,b,quality); //The BlurFilter object.

var filterArray:Array = new Array(blur); //To apply the filter we need an array of filters.

light.filters = filterArray; //Sets the filters array to the Light

/* Change alpha */

light.alpha = Math.random() * 0.6 + 0.1;

/* Scale */

light.scaleX = Math.round(((Math.random() * (1 - minimumScale)) + minimumScale) * 100) / 100;
light.scaleY = light.scaleX;

/* Add the lights */

addChild(light);

/* Store lights in an array to use it later */

lights.push(light);

/* Check for lights direction */

checkDirection();
}
}

/* Check direction */

private function checkDirection():void
{
for (var i:int = 0; i < lights.length; i++)
{
switch ( lightsDir )
{
case "up" :

lights[i].addEventListener(Event.ENTER_FRAME, moveUp);

break;
case "down" :

lights[i].addEventListener(Event.ENTER_FRAME, moveDown);

break;
case "right" :

lights[i].addEventListener(Event.ENTER_FRAME, moveRight);

break;
case "left" :

lights[i].addEventListener(Event.ENTER_FRAME, moveLeft);

break;
default :

trace("Something weird just happened!");
}
}
}

/* Move Up function */

private function moveUp(e:Event):void
{
e.target.x += e.target.xSpeed;
e.target.y-=e.target.ySpeed;

/* Reset light position, Y first, then X */

if (e.target.y + (e.target.height / 2) < 0)
{
e.target.y = areaH + (e.target.height / 2);
e.target.x=Math.floor(Math.random()*areaW);
}

if ((e.target.x + e.target.width / 2) < 0 || (e.target.x - e.target.width / 2) > areaW)
{
e.target.y = areaH + (e.target.height / 2);
e.target.x=Math.floor(Math.random()*areaW);
}
}

/* Move Down function */

private function moveDown(e:Event):void
{
e.target.x+=e.target.xSpeed;
e.target.y+=e.target.ySpeed;

/* Reset light position, Y first, then X */

if (e.target.y - (e.target.height / 2) > areaH)
{
e.target.y = 0 - (e.target.height / 2);
e.target.x=Math.floor(Math.random()*areaW);
}

if ((e.target.x + e.target.width / 2) < 0 || (e.target.x - e.target.width / 2) > areaW)
{
e.target.y = areaH + (e.target.height / 2);
e.target.x=Math.floor(Math.random()*areaW);
}
}

/* Move Right function */

private function moveRight(e:Event):void
{
e.target.x+=e.target.ySpeed;
e.target.y+=e.target.xSpeed;

/* Reset light position, Y first, then X */

if (e.target.y - (e.target.height / 2) > areaH || e.target.y + (e.target.height / 2) < 0)
{
e.target.x = 0 - (e.target.height / 2);
e.target.y = Math.floor(Math.random()*areaH);
}

if ((e.target.x - e.target.width / 2) > areaW)
{
e.target.x = 0 - (e.target.height / 2);
e.target.y = Math.floor(Math.random()*areaW);
}
}

/* Move Left function */

private function moveLeft(e:Event):void
{
e.target.x-=e.target.ySpeed;
e.target.y-=e.target.xSpeed;

/* Reset light position, Y first, then X */

if (e.target.y - (e.target.height / 2) > areaH || e.target.y + (e.target.height / 2) < 0)
{
e.target.x = areaW + (e.target.width / 2);
e.target.y=Math.floor(Math.random()*areaH);
}

if ((e.target.x + e.target.width / 2) < 0)
{
e.target.x = areaW + (e.target.width / 2);
e.target.y=Math.floor(Math.random()*areaW);
}
}
}
}




Обязательно после этого сохранить изменение в скрипте класса. Файл - Сохранить.
Или если хотите, то просто замените папку Classes на папку Classes из этого архива


Вложение: 4115784_classes.rar


вверх^ к полной версии понравилось! в evernote
Комментарии (28):
WOW!!!!!!Как классно, Мариша!!!! А я прям голову сломала, как же делаются разные по цвету шарики. Однотонные я научилась менять...
Спасибо большое!!!!!
таила 15-06-2014-03:07 удалить
очень красиво получается!
Jorjorych 15-06-2014-05:42 удалить
Удачи во всех делах и начинаниях!
novprospekt 15-06-2014-07:47 удалить
Ответ на комментарий Leniency # Спасибо.
novprospekt 15-06-2014-07:51 удалить
Ответ на комментарий Лариса_Гурьянова # Пожалуйста Ларочка. Сильно расписывать не стала. Всё по уроку Леночки. Только скрипт поменять и папку Classes из архива взять и поменять в папке проекта.
novprospekt 15-06-2014-07:51 удалить
Ответ на комментарий таила # Спасибо большое.
novprospekt 15-06-2014-07:52 удалить
Ответ на комментарий НАДЕЖДА_БЫКОВСКИХ # Пожалуйста Надюш. Пользуйся в удовольствие.
novprospekt 15-06-2014-07:53 удалить
Ответ на комментарий Jorjorych # Спасибо большое.
novprospekt 15-06-2014-07:53 удалить
Ответ на комментарий марина-значит_морская # Рада видеть Мариночка. Всего хорошего.
Сулия 15-06-2014-08:23 удалить
Спасибо за отличный урок!
Марина, спасибо за урок. Работа хороша. Попробую применить на деле. Эффект "боке" получается, а остальному буду учиться. Спасибо!
Lana-Lanochka 15-06-2014-09:39 удалить
Большое спасибо за урок!!!!любовь!
Доброе утро, Мариночка!
Благодарю за урок.
Удачи!
ВАТ 15-06-2014-09:53 удалить
Мариночка, спасибо большое за урок! Как во время! У меня как раз в планах было разобраться с ним (я вчера об этом и Ларисе написала), а теперь и разбираться не буду, по твоему уроку сделаю. Сейчас убегаю на работу, а потом процитирую.
jzayka 15-06-2014-10:45 удалить
Мариша,большое спасибо.Верочка уже сказала,что во время..
Думала про разные цвета..Но не додумалась с этим уроком на демиарте связать..
Franzuzhenka 15-06-2014-12:11 удалить
Marisha, priwetik! Kak sdorowo!!! Kak ras wchera sdelala takoj urok po boke!!! A tut esho i zwetnie!!!! Samechatelnaja idejka, spasibki! Poprobuü eshe i tak!!!
http://www.liveinternet.ru/users/franzuzhenka/post327802379/
koreckolga 15-06-2014-13:30 удалить
Мариночка, приветик! Как классно и здорово!!!
Я пока всё цитирую, хочу научиться, да со временем напряг. Будет время обязательно возьмусь, меня это очень увлекает.
Спасибо огромное тебе!!!
Flash_Magic 15-06-2014-18:50 удалить
Ну Мариночка, ты уже АС во флеш
Такую красоту смастерила, да ещё и урок с пояснением написала!
А у меня совсем времени нет позаниматься
Столько хочется сделать, а времени не хватает...
так что то по быстренькому сварганю, потому что душа требует.
Irina-snez 15-06-2014-21:58 удалить
Спасибо, Мариночка! Замечательный урок!
wellax 16-06-2014-02:47 удалить
Моя благодарность, Марина!
Попробовала, всё получилось!
Irina-snez 16-06-2014-08:53 удалить
Вот, что у меня получилось, Мариночка!



Мариша,приветик,я провалялась в больнице 25 дней пришла и ужаснулась от новости о закрытии Яру,так расстроилась, не знаю что и делать?? С юкозом не успела разобраться,хотя урок твой есть ,а тут ЖЖ Яндекс предлагает.Зарегистрировалась там, аватарку загрузила ,а что и как дальше делать не знаю...Мариша,а ты куда с Ярушки переедешь,ришила уже? Посоветуй,пожалуйста, что лучше,ты в этом плане продвинутый человек...
niilit51 23-07-2014-01:52 удалить
Большое спасибо за урок!!!!
SiirenNika 11-02-2016-10:53 удалить
Благодарю за красоту!


Комментарии (28): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Работа по уроку «Создание эффекта Боке». | novprospekt - Дневник novprospekt | Лента друзей novprospekt / Полная версия Добавить в друзья Страницы: раньше»